不允许使用Django方法(POST)
在以下观点中:不允许使用Django方法(POST),django,forms,post,Django,Forms,Post,在以下观点中: def article_add(request): print request.user, " is adding an article" if request.method == "POST": web_url = request.POST['web_url'] Uploadarticle(web_url) return redirect('myapp:index') 在html中: <form class
def article_add(request):
print request.user, " is adding an article"
if request.method == "POST":
web_url = request.POST['web_url']
Uploadarticle(web_url)
return redirect('myapp:index')
在html中:
<form class="navbar-form navbar-right" role="form" method="post" action="{% url 'myapp:article_add' %}" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group">
<div class="col-sm-10">
<input id="article_url" name="web_url" type="text">
</div>
</div>
<button type="submit" class="btn btn-default"> + </button>
</form>
我在这里试图做的是通过html将url值传递给view,调用函数上载数据库,将用户重定向到与refresh相同的主页,然后新添加的项目将显示出来
不知何故,每次提交时,我都会收到一个空白页,在终端中,我会收到一个错误,上面写着:
Method Not Allowed (POST): /
"POST / HTTP/1.1" 405 0
正如我在代码中看到的,两个视图都使用相同的URL,因此,每当您点击URL
/
,请求都会转到第一个视图(IndexView),该视图可能没有任何post方法。更改文章添加视图的URL。这样做:
app_name = 'myapp'
urlpatterns = [
url(r'^article-add/$', views.article_add, name='article_add'),
url(r'^$', views.IndexView.as_view(), name='index'),
]
您将能够从URL{host\u address}/article add/
访问视图。您的URL中有一个小错误。py按照以下方式更改您的URL.py
app_name = 'myapp'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^article-add/$', views.article_add, name='article_add'),
]
如果您在主项目url.py中包含“myapp”url.py,那么在html格式中也可以这样放置action=“{%url”article\u add“%}”
视图。您能访问article\u add
视图吗?您使用的是基于功能的视图吗?我想,一旦我创建了一个不同的url,它就可以工作了。谢谢
app_name = 'myapp'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^article-add/$', views.article_add, name='article_add'),
]