配置admin_reorder后Django-admin无法重排应用且提示无权限如何解决
Django Admin 问题修复方案
应用展示顺序无法重排
- 首先确认
admin_reorder已添加到INSTALLED_APPS中,且加载顺序在django.contrib.admin之后,不要仅放在自定义的DEFAULT_APPS变量中不做合并 - 修正
ADMIN_REORDER配置格式,django-admin-reorder包要求配置项为字典结构,不可直接填写应用路径字符串,示例如下:
ADMIN_REORDER = ( # 应用名和INSTALLED_APPS中注册的名称保持一致 {"app": "apps.accounts"}, {"app": "apps.questions"}, {"app": "apps.exams"}, {"app": "apps.settings"}, ) # 如需自定义应用展示名称,可以添加label字段:{"app": "apps.accounts", "label": "账户管理"}
无权限查看或编辑内容提示
- 检查中间件加载顺序,
admin_reorder.middleware.ModelAdminReorder必须放在django.contrib.auth.middleware.AuthenticationMiddleware之后,否则会打断权限校验流程 - 确认登录的账号具备对应模型的操作权限,非超级用户需要手动分配权限,超级用户需确认
is_superuser、is_staff字段均为True - 确认所有需要在admin后台展示的模型,都已在对应应用的
admin.py中完成注册,无注册模型时非超级用户也会触发该提示 - 确认
django.contrib.auth、django.contrib.contenttypes两个依赖应用已正常添加到INSTALLED_APPS中
完整参考配置
# INSTALLED_APPS 配置 INSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", # 第三方应用放在django自带应用之后 "admin_reorder", # 自定义应用 "apps.accounts", "apps.questions", "apps.exams", "apps.settings", ] # MIDDLEWARE 配置 MIDDLEWARE = [ "django.middleware.security.SecurityMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", # 认证中间件必须放在重排中间件之前 "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", # 重排中间件放在认证之后 "admin_reorder.middleware.ModelAdminReorder", ] # ADMIN_REORDER 配置 ADMIN_REORDER = ( {"app": "apps.accounts", "label": "账户管理"}, {"app": "apps.questions", "label": "题库管理"}, {"app": "apps.exams", "label": "考试管理"}, {"app": "apps.settings", "label": "系统配置"}, )
内容的提问来源于stack exchange,提问作者Roman Demianenko
相关产品推荐
相关产品推荐

