Django登录404错误及注册后跳转异常问题求助
问题分析与解决方案
核心问题1:登录表单提交路径错误导致404
登录表单的action属性设置为login/,当页面处于http://127.0.0.1:8000/login/时,提交表单会请求http://127.0.0.1:8000/login/login/,该URL未在路由配置中定义,因此返回404错误。
核心问题2:URL路由的name参数命名不规范
urls.py中登录路由的name设为login.html,但视图跳转时使用redirect('login'),名称不匹配会引发跳转异常;同时此类命名方式不符合Django的最佳实践。
修复步骤:
1. 修改login.html的表单提交路径
将表单action改为使用Django的url标签匹配路由名称,确保路径准确:
<form action="{% url 'login' %}" method='POST'>
也可以直接使用绝对路径:
<form action="/login/" method='POST'>
2. 修正urls.py中的路由name参数
把登录、登出等路由的name改为简洁规范的名称:
urlpatterns=[ path('',views.index,name='index'), #path('counter',views.counter,name='counter'), path('register/',views.register,name='register'), path('login/',views.login,name='login'), # 改为'login' path('logout/',views.logout,name='logout'), # 改为'logout' path('post/<str:pk>',views.post,name='post') # 改为'post' #path('',views.display_records,name='table.html'), ]
3. 修复注册视图的跳转逻辑(针对注册后异常)
若注册完成后需跳转至登录页,确保注册视图中使用正确的路由名称:
def register(request): # 注册逻辑代码... # 注册成功后跳转登录页 return redirect('login')
内容的提问来源于stack exchange,提问作者Pothula Vinitha reddy
相关产品推荐
相关产品推荐

