【发布时间】:2023-03-29 03:11:02
【问题描述】:
我面临两个问题 NoReverseMatch 和 APPEND_SLASH 。
问题 #1。 APPEND_SLASH
详细信息.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 没有在最后生成“/”。上面的 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/$']
详细信息.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/
这就是它显示错误的地方。
我检查了其他答案,但是无法正常工作。
任何帮助将不胜感激。
【问题讨论】:
-
将
settings.py文件中的APPEND_SLASH设置为True -
您应该将每个问题作为单独的问题提出,尽管首先研究您的问题,没有反向匹配错误有多个重复项(可能还有这个)
-
不要说“请指导”,这可能会被视为轻率,而应尝试说“感谢您的宝贵时间”或“任何帮助将不胜感激”。
-
@Sayse 我发现有几个问题与此无关,但与此无关。
-
@marcusshep 谢谢 :)