You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Django用户认证功能开发遭遇Page not found (404)错误求助

解决Django用户认证中的404错误问题

嘿,我一眼就揪出导致404的核心问题了——你的signup.html里的表单标签把请求方法提交路径搞混了!

问题根源

看你的错误URL:http://localhost:8000/POST?xxx,浏览器居然在请求/POST这个路径,这是因为你在表单里写了:

<form action="POST">

这里完全写错了!action属性是用来指定表单提交的目标URL,而你把它当成了请求方法的参数。正确的请求方法应该用method属性来指定,你现在相当于让浏览器把POST当成一个路径去访问,而你的urls.py里根本没配置这个路径,所以必然返回404。

修复步骤

signup.html里的表单标签改成下面这样:

<form method="POST">
    {%csrf_token%}
    {{form.as_p}}
    <div class="field">
        <div class="control">
            <button class="button is-success"> sign up </button>
        </div>
    </div>
</form>

如果你想明确指定提交的目标URL(更规范),可以用Django的模板标签生成对应路径:

<form method="POST" action="{% url 'signup' %}">
    {%csrf_token%}
    {{form.as_p}}
    <div class="field">
        <div class="control">
            <button class="button is-success"> sign up </button>
        </div>
    </div>
</form>

额外优化建议

为了让URL更符合Django的规范,建议把urls.py里的signup路径加上末尾的斜杠:

urlpatterns = [
    path('', views.home, name="home"),
    path('signup/', views.signup, name="signup")  # 加上末尾的/
]

这样用户不管访问/signup还是/signup/都能正常跳转,避免不必要的路径问题。

验证修复

改完之后,刷新/signup页面,再提交表单,应该就能正常创建用户并跳转到首页了,不会再出现404错误啦!

内容的提问来源于stack exchange,提问作者dailycoding

火山引擎 最新活动