|
|
#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) |