后台管理功能
965 字
5 分钟
后台管理功能
【一】前提
- 我们在书写模型表时,已经将所有的模型表注册到了对应 APP 下的 admin.py文件中
- 在定义模型表时我们会在每一个字段的后面看到 verbose_name属性,该属性的作用时,当我们登陆到admin后台后,我们可以在每一张表中看到每一个字段对应的中文,也就是我们定义的属性值,否则为当前字段
【二】Django注册超级管理员
python manage.py createsuperuser# 依次输入 用户名 邮箱 密码 二次确认密码 即可完成超级管理员注册【三】美化 admin 后台页面
【1】安装第三方模块
pip install django-simpleui【2】注册 APP
INSTALLED_APPS = [ # pip install django-simpleui # 注册simpleui 'simpleui',]【四】自定制后台展示模板
【1】公共模型
class BaseModelAdmin(admin.ModelAdmin): # display_字段名(self,obj) def display_created_time(self, obj): # 将需要格式化后的样式返回 return obj.create_time.strftime("%Y-%m-%d %H:%M:%S") # 定制后台字段展示文字和 verbose_name 同理 display_created_time.short_description = "创建时间"
def display_update_time(self, obj): return obj.update_time.strftime("%Y-%m-%d %H:%M:%S")
display_update_time.short_description = "更新时间"def display_avatar(self, obj): # 获取默认的avatar路径 avatar_path = obj.avatar if obj.avatar else 'avatar/default.png' # 拼接完整的URL avatar_url = f'http://127.0.0.1:8000/media/{avatar_path}' # 格式化为HTML链接,并返回 # return format_html('<img href=>{}</a>', avatar_url, avatar_url)
return format_html( f'<a href="{avatar_url}" target="_blank">' f'<img src="{avatar_url}" alt="请稍后再试哦" style="width: 50px;height: auto">' f'</a>')
display_avatar.short_description = "用户头像" # 设置列名显示为"Avatar"【2】模型表示例
from django.contrib import adminfrom django.utils.html import format_html
from lib.CommonAdmin import BaseModelAdminfrom user.models import UserInfo
# Register your models here.
# 创建一个类并用它来定制UserInfo@admin.register(UserInfo)# 这个类必须继承 admin.ModelAdminclass UserInfoAdmin(BaseModelAdmin): def display_avatar(self, obj): # 获取默认的avatar路径 avatar_path = obj.avatar if obj.avatar else 'static/advImg/default.png' # 拼接完整的URL avatar_url = f'http://127.0.0.1:8000/{avatar_path}' # 格式化为HTML链接,并返回 # return format_html('<img href=>{}</a>', avatar_url, img_url)
return format_html( f'<a href="{avatar_url}" target="_blank">' f'<img src="{avatar_url}" alt="请稍后再试哦" style="width: 50px;height: auto">' f'</a>')
display_avatar.short_description = "头像" # 设置列名显示为"Avatar" # 后台展示的信息,默认是全部都展示,但是可以定制展示的字段 list_display = ['username', 'last_name', 'email', 'phone', 'display_avatar', 'display_created_time', 'display_update_time', 'is_deleted', 'blog']【五】注册管理后台模型表
【1】注册用户模型表后台
- user/admin.py
from django.contrib import adminfrom django.utils.html import format_html
from lib import BaseModelAdminfrom user.models import UserInfo
# Register your models here.
# 创建一个类并用它来定制UserInfo@admin.register(UserInfo)# 这个类必须继承 admin.ModelAdminclass UserInfoAdmin(BaseModelAdmin): ordering = ["id"]
def display_avatar(self, obj): # 获取默认的avatar路径 avatar_path = obj.avatar if obj.avatar else 'avatar/default.png' # 拼接完整的URL avatar_url = f'http://127.0.0.1:8000/media/{avatar_path}' # 格式化为HTML链接,并返回 # return format_html('<img href=>{}</a>', avatar_url, img_url)
return format_html( f'<a href="{avatar_url}" target="_blank">' f'<img src="{avatar_url}" alt="请稍后再试哦" style="width: 50px;height: auto">' f'</a>')
display_avatar.short_description = "头像" # 设置列名显示为"Avatar" # 后台展示的信息,默认是全部都展示,但是可以定制展示的字段 list_display = ["id", 'username', 'last_name', 'email', 'phone', 'display_avatar', 'display_created_time', 'display_update_time', 'is_deleted', 'blog']【2】注册个人站点模型表后台
- blog/admin.py
from django.contrib import adminfrom django.utils.html import format_htmlfrom lib.CommonAdmin import BaseModelAdmin
# Register your models here.from blog.models import Blog, Adv
@admin.register(Blog)class BlogAdmin(BaseModelAdmin): ordering = ["id"]
list_display = ['id', 'site_name', 'site_title', 'display_created_time', 'display_update_time', 'site_theme']
@admin.register(Adv)class AdvAdmin(BaseModelAdmin): ordering = ["id"]
def display_img(self, obj): # 获取默认的avatar路径 img_path = obj.img if obj.img else 'static/advImg/default.png' # 拼接完整的URL img_url = f'http://127.0.0.1:8000/media/{img_path}' # 格式化为HTML链接,并返回 # return format_html('<img href=>{}</a>', avatar_url, img_url)
return format_html( f'<a href="{img_url}" target="_blank">' f'<img src="{img_url}" alt="请稍后再试哦" style="width: 50px;height: auto">' f'</a>') # 设置列名显示为"广告图片" display_img.short_description = "广告图片" list_display = ['id', 'title', 'content', 'display_created_time', 'display_update_time', 'mobile', 'is_background_img', 'display_img']【3】注册文章模型表后台
- article/admin.py
from django.contrib import admin
# Register your models here.from article.models import CategoryClass, CategoryTag, Comment, UpAndDown, Article, ArticleToTagfrom lib.CommonAdmin import BaseModelAdmin
@admin.register(Article)class ArticleAdmin(BaseModelAdmin): ordering = ["id"]
def display_content(self, obj): return obj.content[:30]
display_content.short_description = "文章内容" list_display = ['id', 'title', 'desc', 'up_num', 'down_num', 'comment_num', 'display_content', 'display_created_time', 'display_update_time', 'blog', 'category']
@admin.register(CategoryClass)class CategoryClassAdmin(BaseModelAdmin): ordering = ["id"] list_display = ['id', 'name', 'blog']
@admin.register(CategoryTag)class CategoryTagAdmin(BaseModelAdmin): ordering = ["id"] list_display = ['id', 'name', 'blog']
@admin.register(ArticleToTag)class CategoryTagAdmin(admin.ModelAdmin): ordering = ["id"] list_display = ['id', 'article', 'tag']
@admin.register(UpAndDown)class UpAndDownAdmin(BaseModelAdmin): ordering = ["id"] list_display = ['id', 'user', 'article', 'up_or_down', 'display_created_time', 'display_update_time']
@admin.register(Comment)class CommentAdmin(BaseModelAdmin): ordering = ["id"] list_display = ['id', 'user', 'article', 'content', 'is_deleted', 'parent', 'display_created_time', 'display_update_time']支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
C 语言发展史
编程语言了解 C 语言从 BCPL、B 语言到现代标准 C 的发展历程、核心特点与应用领域。
2
C 语言开发环境的安装与配置
编程语言在 Windows、Linux 与 macOS 上安装 C 工具链,配置编辑器,并编译运行第一个 C 程序。
3
C 语言初识:程序运行机制与基本结构
编程语言认识 C 程序从源代码到运行的完整流程,以及基础语法和程序的基本结构。
4
C 语言基础:注释、关键字、变量与数据类型
编程语言学习 C 语言的注释、关键字、标识符、常量、变量和基本数据类型等基础知识。
5
C 语言数据类型
编程语言理解 C 语言的数据类型体系,包括基本类型、整数类型、浮点类型和逻辑类型。
随机文章随机推荐














