Django Project -mysite.urls中定义的URLconf中的错误,无法发现错误

时间:2019-04-25 18:26:16

标签: django forms url redirect config

我已经看过以前的答案(很多都是针对旧版本的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.

注意:内容实际上是已提交,但未正确重定向。

1 个答案:

答案 0 :(得分:1)

您将重定向与渲染混淆了。您呈现了一个模板,但是您需要重定向到URL。您想重定向到哪个URL?如错误所指出,它必须是您的urls.py中的其中之一。

例如:

return HttpResponseRedirect('/worldguestbook/')

更好的是,您应该给URL模式名称命名,并使用reverseredirect快捷方式使用这些名称。