#gq: # 从 Django 内置的 admin 模块导入 AdminSite 基类 from django.contrib.admin import AdminSite # 导入 LogEntry 模型,用于记录管理员操作日志 from django.contrib.admin.models import LogEntry # 导入 Site 模型及其默认的 Admin 配置 from django.contrib.sites.admin import SiteAdmin from django.contrib.sites.models import Site # 批量导入各个自定义 App 的 Admin 配置和模型 # 这种星号(*)导入方式在项目规模较小时很方便,但大型项目中可能影响代码可读性 from accounts.admin import * from blog.admin import * from blog.models import * from comments.admin import * from comments.models import * # 导入自定义的 LogEntryAdmin,用于自定义操作日志的后台显示 from djangoblog.logentryadmin import LogEntryAdmin from oauth.admin import * from oauth.models import * from owntracks.admin import * from owntracks.models import * from servermanager.admin import * from servermanager.models import * class DjangoBlogAdminSite(AdminSite): """ 自定义的 Admin 站点类,继承自 Django 的 AdminSite。 用于定制 Admin 后台的外观和行为。 """ # 定制 Admin 后台顶部的标题 site_header = 'djangoblog administration' # 定制浏览器标签页上的标题 site_title = 'djangoblog site admin' def __init__(self, name='admin'): """ 初始化方法 :param name: 站点的名称,默认是 'admin',这会影响 URL 反向解析等。 """ super().__init__(name) def has_permission(self, request): """ 重写权限检查方法。 这个方法决定了一个请求是否有权限访问 Admin 后台。 :param request: 当前的 HTTP 请求对象 :return: Boolean,表示是否允许访问 """ # 只有超级用户(superuser)才能访问这个自定义的 Admin 站点 # 这是一个比默认更严格的权限控制 return request.user.is_superuser # def get_urls(self): # """ # (已注释)重写 get_urls 方法来添加自定义的 URL 路由。 # 这是一个示例,展示了如何在 Admin 后台中加入自己的视图。 # """ # # 先获取父类的所有 URL # urls = super().get_urls() # from django.urls import path # # 导入一个自定义的视图函数,用于刷新缓存 # from blog.views import refresh_memcache # # # 定义自己的 URL 模式 # my_urls = [ # # 使用 self.admin_view() 包装自定义视图,以确保它受到 Admin 权限保护 # path('refresh/', self.admin_view(refresh_memcache), name="refresh"), # ] # # 返回合并后的 URL 列表 # return urls + my_urls # 创建一个自定义 Admin 站点的实例 # 这个实例将被用于注册所有的模型 admin_site = DjangoBlogAdminSite(name='admin') # --- 开始注册各个 App 的模型到自定义的 admin_site --- # 注册 blog App 的模型 admin_site.register(Article, ArticlelAdmin) admin_site.register(Category, CategoryAdmin) admin_site.register(Tag, TagAdmin) admin_site.register(Links, LinksAdmin) admin_site.register(SideBar, SideBarAdmin) admin_site.register(BlogSettings, BlogSettingsAdmin) # 注册 servermanager App 的模型 admin_site.register(commands, CommandsAdmin) admin_site.register(EmailSendLog, EmailSendLogAdmin) # 注册 accounts App 的模型 admin_site.register(BlogUser, BlogUserAdmin) # 注册 comments App 的模型 admin_site.register(Comment, CommentAdmin) # 注册 oauth App 的模型 admin_site.register(OAuthUser, OAuthUserAdmin) admin_site.register(OAuthConfig, OAuthConfigAdmin) # 注册 owntracks App 的模型 admin_site.register(OwnTrackLog, OwnTrackLogsAdmin) # 注册 Django 内置的 Site 模型 admin_site.register(Site, SiteAdmin) # 注册 Django 内置的 LogEntry 模型,使用自定义的 LogEntryAdmin 配置 admin_site.register(LogEntry, LogEntryAdmin)