"""`xjj` DjangoBlog 管理站点配置 ======== 该模块定义了 DjangoBlog 项目的自定义管理站点配置。它继承自 Django 的默认 AdminSite, 并注册了项目中所有需要在管理后台进行管理的模型。 主要功能: ~~~~~~~~ - 创建自定义管理站点 - 设置管理站点的标题和头部显示文本 - 限制只有超级用户才能访问管理站点 - 注册各个应用中的模型到管理站点 注册的模型包括: ~~~~~~~~ - 博客相关:文章、分类、标签、链接、侧边栏、博客设置 - 用户相关:博客用户 - 评论相关:评论 - OAuth 相关: OAuth 用户、 OAuth 配置 - 其他:命令、邮件发送日志、位置跟踪日志、站点信息、管理日志 使用方式: ~~~~~~~~ 通过 admin_site 实例来访问自定义的管理站点。 """ from django.contrib.admin import AdminSite from django.contrib.admin.models import LogEntry from django.contrib.sites.admin import SiteAdmin from django.contrib.sites.models import Site from accounts.admin import * from blog.admin import * from blog.models import * from comments.admin import * from comments.models import * 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): """`xjj` 自定义 Django 管理站点类 继承自 Django 默认的 AdminSite ,用于为 DjangoBlog 项目提供定制化的管理后台 """ site_header = 'djangoblog administration' site_title = 'djangoblog site admin' def __init__(self, name='admin'): """`xjj` 初始化管理站点 Args: name (str): 管理站点的名称,默认为 'admin' """ super().__init__(name) def has_permission(self, request): """`xjj` 检查用户是否有访问管理站点的权限 重写了父类的方法,只允许超级用户访问管理站点 Args: request: HTTP 请求对象 Returns: bool: 如果用户是超级用户则返回 **True**,否则返回 **False** """ return request.user.is_superuser # def get_urls(self): # urls = super().get_urls() # from django.urls import path # from blog.views import refresh_memcache # # my_urls = [ # path('refresh/', self.admin_view(refresh_memcache), name="refresh"), # ] # return urls + my_urls admin_site = DjangoBlogAdminSite(name='admin') 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) admin_site.register(commands, CommandsAdmin) admin_site.register(EmailSendLog, EmailSendLogAdmin) admin_site.register(BlogUser, BlogUserAdmin) admin_site.register(Comment, CommentAdmin) admin_site.register(OAuthUser, OAuthUserAdmin) admin_site.register(OAuthConfig, OAuthConfigAdmin) admin_site.register(OwnTrackLog, OwnTrackLogsAdmin) admin_site.register(Site, SiteAdmin) admin_site.register(LogEntry, LogEntryAdmin)