2017-02-26 141 views
3

在访问量:的Django不允许的方法(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="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> 

在url.py:

app_name = 'myapp' 
urlpatterns = [ 
    url(r'^$', views.IndexView.as_view(), name='index'), 
    url(r'^$', views.article_add, name='article_add'), 
] 

什么,我想在这里做是通过html传递url值来查看,调用函数来上传数据库,将用户重定向到同一个主页刷新,然后新添加的项目就会显示出来。

不知怎的,每次我提出我得到了一个空白页,在终端我得到了一个错误说:

Method Not Allowed (POST):/
"POST/HTTP/1.1" 405 0 
+0

你能访问'article_add'视图吗?你使用的是基于功能的视图吗?你可以请把你的主要urls.py在这里 – Cadmus

回答

4

,我可以在代码中看到,您使用的是相同的URL两个观点,所以,每当你点击网址/,请求转到第一个视图(IndexView),该视图可能没有任何后期处理方法。更改网址为article_add视图。这样做:

app_name = 'myapp' 
urlpatterns = [ 
    url(r'^article-add/$', views.article_add, name='article_add'), 
    url(r'^$', views.IndexView.as_view(), name='index'), 

] 

您将能够从URL访问视图{host_address}/article-add/

+0

我想,一旦我创建了一个不同的url它的工作。谢谢 – viviwill

1

。在你的urls.py小失误改变你的urls.py下,如果你的方式

app_name = 'myapp' 

urlpatterns = [ 
    url(r'^$', views.IndexView.as_view(), name='index'), 
    url(r'^article-add/$', views.article_add, name='article_add'), 
] 

包含主要项目urls.py中的'myapp'urls.py,然后以html的形式包含action="{% url 'article_add' %}"这种方式。