簡體   English   中英

Django NoReverseMatch和POST URL錯誤

[英]Django NoReverseMatch and POST URL error

我面臨2個問題NoReverseMatchAPPEND_SLASH

第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:

http://127.0.0.1:8000/genericviews/1/update-entry

我知道網址應以“ /”結尾。

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

當我嘗試更改硬編碼網址時,出現以下錯誤,

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/任何項目時,它將帶我到URL http://127.0.0.1:8000/genericviews/1/ ,這是顯示錯誤的地方。

我檢查了其他答案,但是無法正常工作。

任何幫助,將不勝感激。

它沒有添加斜線,因為您沒有要求它。 您已經對“更新條目”的相對URL進行了硬編碼,因此將使用它。

當您嘗試使用url標記時,會收到錯誤消息,因為尚未傳遞生成該URL所需的參數。 假設您在模板上下文中將object作為object ,則將執行以下操作:

{% url 'genericviews:update-entry' pk=object.pk %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM