我面臨2個問題NoReverseMatch
和APPEND_SLASH
。Django NoReverseMatch和POST URL錯誤
問題#1。 APPEND_SLASH
Detail.html
<form action="update-entry" method="post">
/* if I add '/' at the end of update-entry, it works fine. */
{% csrf_token %}
{{ form }}
<input type="submit" value="Edit">
</form>
當我點擊編輯按鈕,我得到下面的錯誤,
You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:8000/genericviews/1/update- entry/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.
這是生成的URL:
我知道URL應該以'/'結尾。
urls.py
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^(?P<pk>[0-9]+)/$', views.DetailsView.as_view(), name='detail'),
url(r'^makeentry$', views.makeentry, name='makeentry'),
url(r'^static/$', views.StaticView.as_view()),
url(r'^new-entry/$', views.MakeEntryView.as_view(), name='new-entry'),
url(r'^(?P<pk>[0-9]+)/update-entry/$', views.UpdateEntryView.as_view(), name='update-entry'),
]
我的困惑是,爲什麼網址是不是在最後生成 '/'。上面的URL模式對我來說似乎是正確的
問題2 NoReverseMatch
當我試圖改變硬編碼的URL,我得到下面的錯誤,
NoReverseMatch at /genericviews/1/
Reverse for 'update-entry' with arguments '()' and keyword arguments '{}'
not found. 1 pattern(s) tried: ['genericviews/(?P<pk>[0-9]+)/update-
entry/$']
Detail.html
<form action="{% url 'genericviews:update-entry' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Delete Product">
</form>
試圖聯繫爲好,
{#<a href="{% url 'genericviews:update-entry' %}">Edit</a>#}
當我點擊頁面http://127.0.0.1:8000/genericviews/
, 中的任何項目時,它會將我帶到網址http://127.0.0.1:8000/genericviews/1/
而這就是它顯示錯誤的地方。
我檢查了其他答案,但是,無法讓它工作。
任何幫助,將不勝感激。
集'APPEND_SLASH'在'settings.py'文件爲True –
你應該提高每一個問題作爲獨立的問題,儘管研究您的問題第一,有沒有反向匹配錯誤(可能是這一個)的多個副本 – Sayse
而不是說「請指導」,這可能被視爲不體諒,你應該嘗試說「謝謝你的時間」或「任何幫助將讚賞「。 – marcusshep