我已经看过以前的答案(很多都是针对旧版本的Django,它没有帮助),但是无法在我的代码中发现错误。在运行服务器时,出现“找不到页面”错误,并单击表单的“提交”按钮。
问题似乎是重定向。我不太了解错误消息(如下所示)或如何工作,因此进行解释会有所帮助。
The current path, addMessage/worldguestbook/worldguestbook.html
相关的 views.py代码和功能**
def addMessage(request):
new_item =GuestBookItem(content=request.POST['content'])
new_item.save()
return HttpResponseRedirect('worldguestbook/worldguestbook.html')
表单(在html中)
<form action="/addMessage/" method="post">{% csrf_token %}
<input type="text" name="content"/>
<input type="submit" value="Add"/>
</form>
urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('worldguestbook/',worldguestbookView),
path('login/',loginView),
path('addMessage/',addMessage),
]
错误1
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/addMessage/worldguestbook/worldguestbook.html
Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
admin/
worldguestbook/
login/
addMessage/
The current path, addMessage/worldguestbook/worldguestbook.html, didn't match any of these.
注意:内容实际上是已提交,但未正确重定向。
答案 0 :(得分:1)
您将重定向与渲染混淆了。您呈现了一个模板,但是您需要重定向到URL。您想重定向到哪个URL?如错误所指出,它必须是您的urls.py中的其中之一。
例如:
return HttpResponseRedirect('/worldguestbook/')
更好的是,您应该给URL模式名称命名,并使用reverse
或redirect
快捷方式使用这些名称。