Django登录报错:Reverse for 'admin' not found 问题求助
Django登录报错:Reverse for 'admin' not found 解决办法
错误根源
从错误回溯能明确看到:登录验证通过后,Django要跳转到LOGIN_REDIRECT_URL设置的地址,但这个配置项被设成了'admin'——而Django admin站点的URL是带命名空间的,正确的反向解析名称应该是admin:index,直接写'admin'找不到对应的视图或路由。
具体解决方法
方法一:修改全局配置(settings.py)
打开项目根目录下的settings.py,找到LOGIN_REDIRECT_URL这一行,改成以下任意一种:
- 跳转到admin后台首页:
LOGIN_REDIRECT_URL = 'admin:index'
- 跳转到网站首页:
LOGIN_REDIRECT_URL = '/'
- 跳转到你自己定义的某个视图(比如dashboard):
LOGIN_REDIRECT_URL = 'dashboard' # 前提是你已经给该视图设置了name='dashboard'
方法二:在登录视图里直接指定跳转地址
如果不想改全局配置,可以修改你views.py里的登录逻辑,把成功登录后的返回语句改成:
if user.is_active: login(request, user) # 直接指定跳转地址,比如admin首页 return redirect('admin:index') # 或者跳转到首页:return redirect('/')
额外确认
确保根urls.py里的admin路由配置没问题:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include("ttgen.urls")), path('account/', include("account.urls")), ]
小提示
Django反向解析带命名空间的应用URL时,必须用[命名空间]:[视图名称]的格式,比如admin的用户管理页面是admin:auth_user_changelist,不能只写admin。
内容的提问来源于stack exchange,提问作者Leigh Garabz
相关产品推荐
相关产品推荐

