繁体   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