Django自定义登录URL问题:修改路径后出现404错误求助
解决Django登录URL修改后出现404的问题
嘿,我完全懂你遇到的这个坑!当你把登录视图的URL从/login/改成/restaurant/login/后,访问需要认证的页面就出404,核心原因是Django的认证系统还不知道你改了登录路径。
默认情况下,Django会把/accounts/login/作为登录跳转的默认地址,之前用/login/能正常工作,是因为刚好匹配到了你当时的URL规则;但改成/restaurant/login/后,系统还是按旧逻辑去跳转,自然找不到对应的页面了。
具体解决步骤:
在settings.py里配置LOGIN_URL:
最灵活的方式是用URL名称来配置,后续不管怎么改URL路径都不用再调整这个设置。在你的settings.py中添加一行:LOGIN_URL = 'login'这里的
'login'就是你给LoginView设置的name='login',Django会自动反向解析出对应的/restaurant/login/路径。如果你想直接写完整路径也可以,但推荐用名称,维护起来更省心:
LOGIN_URL = '/restaurant/login/'确认URL名称唯一:
确保项目里没有其他URL模式也用了name='login',避免反向解析时出现冲突。
额外小提醒:
如果你是用LoginRequiredMixin来保护类视图,记得要让你的类正确继承这个Mixin,比如:
from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic import TemplateView class MyProtectedView(LoginRequiredMixin, TemplateView): template_name = 'protected_page.html'
这样修改后,再访问需要认证的页面,就会正确跳转到你设置的/restaurant/login/登录页面,不会再出现404错误啦!
内容的提问来源于stack exchange,提问作者jibin mathew
相关产品推荐
相关产品推荐

