自定义Django Admin后用户与组模块消失,如何恢复?
恢复Django自定义AdminSite中的用户和组模块
这个问题我之前也碰到过~当你替换默认的AdminSite为自定义的MyAdminSite时,Django不会自动帮你注册用户和组这两个内置模型的管理界面,因为默认的admin.site是预先帮你做好了这一步的,而自定义的站点需要手动来处理。
你只需要在代码中手动注册User和Group模型及其对应的默认Admin类即可,具体步骤如下:
步骤1:导入所需的模型和Admin类
在你的models.py(或者专门的admin.py文件)顶部添加以下导入语句:
from django.contrib.auth.models import User, Group from django.contrib.auth.admin import UserAdmin, GroupAdmin
步骤2:在自定义AdminSite中注册用户和组
有两种常用的方式可以完成注册:
方式一:在MyAdminSite的初始化方法中注册
修改你的MyAdminSite类,添加__init__方法来注册这两个模型:
class MyAdminSite(admin.AdminSite): def __init__(self, name='admin'): super().__init__(name) # 注册用户和组的管理界面 self.register(User, UserAdmin) self.register(Group, GroupAdmin) def my_view(self, request): return HttpResponse("Test") def get_urls(self): from django.urls import path urlpatterns = super().get_urls() urlpatterns += [ path('my_view/', self.admin_view(self.my_view)) ] return urlpatterns
方式二:在自定义站点实例化后注册
如果你不想修改MyAdminSite类的结构,也可以在实例化站点之后直接注册:
admin.site = MyAdminSite() # 手动注册用户和组 admin.site.register(User, UserAdmin) admin.site.register(Group, GroupAdmin)
完成以上操作后,重启你的Django服务,就能在自定义的Admin面板中看到用户和组的管理模块啦~
内容的提问来源于stack exchange,提问作者EngineerSpock
相关产品推荐
相关产品推荐

