Django3使用类基视图实现登录功能提交表单报404错误咨询
问题成因
- 登录表单的
action属性配置错误:你写的action="post"是相对路径,当你在/login/页面提交表单时,浏览器会自动将提交路径拼接为/login/post,而你的路由配置中没有匹配该路径的规则,因此触发404报错。 - 表单未指定提交方法:默认会使用GET方式提交数据,就算路径正确也无法正常完成登录验证逻辑。
解决方法
直接修改登录模板中的form标签即可,有两种可选方案:
- 留空action属性(默认提交到当前页面路径),同时显式指定提交方法为POST:
<form action="" method="POST"> {% csrf_token %} {{form}} <button type="submit">Login</button> </form>
- 使用Django模板的url标签显式指定提交到登录路由,兼容性更强:
<form action="{% url 'login' %}" method="POST"> {% csrf_token %} {{form}} <button type="submit">Login</button> </form>
如果你的登录模板没有放在registration/login.html的默认路径下,还需要在路由配置中给LoginView指定template_name参数:
path('login/', auth_views.LoginView.as_view(template_name="你实际的模板路径"), name='login'),
修改完成后刷新页面提交表单即可正常走登录逻辑。
内容的提问来源于stack exchange,提问作者Nauman K
相关产品推荐
相关产品推荐

