Django配置LoginRequiredMixin后admin登录如何跳转回原authorized.html页面
问题根因
跳转异常的核心原因是login_url配置错误:你配置的/admin/是Django后台首页而非登录入口,访问该地址时后台会自动触发二次登录跳转,导致原next参数被嵌套为next=/admin/%3Fnext%3D/authorized/,登录成功后会优先响应第一层next跳转到后台首页,不会解析第二层的目标页面参数。
解决步骤
1. 修正视图配置
将authorizedView中的login_url直接指向Django后台登录路径,避免参数嵌套:
from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic import TemplateView class authorizedView(LoginRequiredMixin, TemplateView): template_name = 'home/authorized.html' # 替换原有的/admin/,直接指向登录页 login_url = '/admin/login/' # 可省略,默认值就是next,和Django后台登录参数规则一致 redirect_field_name = 'next'
2. 确认路由映射
检查项目根目录的urls.py是否已经配置了对应路径的路由,示例如下:
from django.contrib import admin from django.urls import path from home.views import authorizedView urlpatterns = [ path('admin/', admin.site.urls), # 对应你要访问的/authorized/路径 path('authorized/', authorizedView.as_view(), name='authorized'), ]
3. 功能验证
重启Django开发服务器后,访问http://127.0.0.1:8000/authorized/,会直接跳转到http://127.0.0.1:8000/admin/login/?next=/authorized/,登录管理员账号后即可自动跳转回authorized.html页面。
异常排查:如果修改后仍然跳转异常,检查
settings.py中是否配置了全局的LOGIN_REDIRECT_URL,该配置优先级高于next参数,可临时注释该配置后重试。
内容的提问来源于stack exchange,提问作者dark_prince
相关产品推荐
相关产品推荐

