2017-02-26 135 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' %}"這種方式。