Django 中自定义 Admin 样式与功能
自定义 Admin 样式与功能
1 页面修改中文
1.1 语言设置为中文
settings.py
LANGUAGE_CODE = 'zh-hans'
修改结果

1.2 应用管理设置为中文
应用/apps.py
from django.apps import AppConfig
class BbssConfig(AppConfig):
name = 'bbs'
# 添加下面这句
verbose_name = 'BBS系统'
修改结果

1.3 数据库表设置为中文
应用/models.py
class Comment(models.Model):
topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
comment_text = models.TextField(max_length=2000)
author = models.ForeignKey(User, default=1, on_delete=models.CASCADE)
picture = models.FileField(blank=True, null=True) # 添加文件类型字段,并默认为空
pub_date = models.DateTimeField(auto_now_add=True)
def get_comment_text_md(self):
"""将markdown格式转化为html"""
return mark_safe(markdown(self.comment_text))
def __str__(self):
return self.comment_text
class Meta:
verbose_name = '评论' # 单数时显示内容
verbose_name_plural = '评论' # 复数时显示内容
默认数据库表在后台中显示都为复数形式,而中文没有复数形式,因此将两种形式都设置为相同名称
修改结果

1.4 数据库表字段名称修改为中文
应用/models.py
class Comment(models.Model):
topic = models.ForeignKey(Topic, on_delete=models.CASCADE, verbose_name='话题')
comment_text = models.TextField('评价内容', max_length=2000)
author = models.ForeignKey(User, default=1, on_delete=models.CASCADE, verbose_name='用户')
picture = models.FileField('图片', blank=True, null=True) # 添加文件类型字段,并默认为空
pub_date = models.DateTimeField('发布时间', auto_now_add=True)
def get_comment_text_md(self):
"""将markdown格式转化为html"""
return mark_safe(markdown(self.comment_text))
def __str__(self):
return self.comment_text
class Meta:
verbose_name = '评论' # 单数时显示内容
verbose_name_plural = '评论' # 复数时显示内容
一般的字段只需加个显示名称的位置参数就可以,而一对多关系的要指定关键字参数 verbose_name,并且关键字参数要放在位置参数后面
修改结果

2 修改后台样式
使用 django-grappelli 第三方应用进行修改admin样式
GitHub:https://github.com/sehmaschine/django-grappelli
文档:https://django-grappelli.readthedocs.io/en/latest/quickstart.html
其他工具:https://djangopackages.org/grids/g/admin-interface/
2.1 安装
pip install django-grappelli
2.2 导入项目
settings.py
INSTALLED_APPS = [
'accounts.apps.AccountsConfig',
'polls.apps.PollsConfig',
'bbs.apps.BbssConfig',
'grappelli',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
2.3 导入URL
项目 / urls.py
urlpatterns = [
path('grappelli', include('grappelli.urls')),
path('admin/', admin.site.urls),
path('', include('bbs.urls')),
path('accounts/', include('accounts.urls')),
]
2.4 收集静态文件统一放到一个地方
settings.py 中添加
# 收集静态文件统一存放的根路径
STATIC_ROOT = os.path.join(BASE_DIR, 'static-files')
执行命令
python manage.py collectstatic

自动生成

再次启动服务会发现管理页面已经被修改

2.5 自定义标题
settings.py 中添加
# 后台自定义标题
GRAPPELLI_ADMIN_TITLE = 'Z-BBS ADMIN'
刷新页面

2.6 admin开启分页功能
应用 / admin.py
from django.contrib import admin
# Register your models here.
from .models import Topic, Comment
class TopicAdmin(admin.ModelAdmin):
list_display = ('topic_text', 'author', 'pub_date')
search_fields = ('topic_text', 'author')
list_editable = ('author',)
list_per_page = 10
class CommentAdmin(admin.ModelAdmin):
list_display = ( 'comment_text', 'author', 'pub_date', 'topic')
search_fields = ('comment_text', 'author')
list_editable = ('author',)
list_per_page = 10

2.7 admin 开启过滤功能
应用 / admin.py
class TopicAdmin(admin.ModelAdmin):
list_display = ('topic_text', 'author', 'pub_date')
list_filter = ('topic_text', 'author', 'pub_date')
search_fields = ('topic_text',)
list_editable = ('author',)
list_per_page = 10
class CommentAdmin(admin.ModelAdmin):
list_display = ( 'comment_text', 'author', 'pub_date', 'topic')
list_filter = ('comment_text', 'author', 'pub_date', 'topic')
search_fields = ('comment_text',)
list_editable = ('author',)
list_per_page = 10
开启之后记得强制刷新页面(ctrl + shift + r),重新加载 js 和 css 代码

Django 中自定义 Admin 样式与功能的更多相关文章
- Django 中自定义用户模型及集成认证授权功能总结
1. 概述 Django 中的 django.contrib.auth 应用提供了完整的用户及认证授权功能. Django 官方推荐基于内置 User 数据模型创建新的自定义用户模型,方便添加 bir ...
- Django中自定义admin---Xadmin的实现
在Django框架中,自带一个后台管理页面admin,这个管理页面很全,但是,有些并不是我们需要的,所以我们可以根据admin的实现流程来自定义自己的需求,即根据admin的实现方式来实现自定制--X ...
- Django中的admin组件分析
admin的使用介绍 django-admin的使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.可以在项目的 setting ...
- [转]Android中自定义checkbox样式
android中自定义checkbox的图片和大小 其实很简单,分三步: 1.在drawable中创建文件checkbox_selector.xml: <?xml version=" ...
- Django中的admin
1.基本知识 在用Django框架写了一个网站之后,我们添加数据大概有两种方式: 1.在连接的数据库中添加数据 2.登录admin,进入后台添加数据 创建一个Django项目后,我们在url.py中会 ...
- Android中自定义checkbox样式
1.首先在drawable文件夹中添加drawable文件checkbox_style.xml.
- Django中自定义模型管理器(Manager)及方法
1.自定义管理器(Manager) 在语句Book.objects.all()中,objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager.每个Django模型至少有一个ma ...
- django中自定义标签和过滤器
想要实现自定义标签和过滤器需要进行准备工作: 准备(必需)工作: 1 在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为polls的app下创建了一个tem ...
- Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失)
一.需求触发场景: 项目中需要出发带有EditText的Dialog显示,要求在编辑完EditText时,点击Dilog的空白处隐藏软键盘.但是Dialog不会消失.示例如下: 二.实现方法: 发布需 ...
随机推荐
- shell脚本如何判断文件大小
转自:https://blog.csdn.net/lovegengxin/article/details/80762329 1 .ls -lls -l $filename | awk '{print ...
- tomcat相关知识点
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用. tomcat的文件结构: bin:用于存放启动和关闭tom ...
- HDU2650 A math problem——高斯素数
题意 给你一个数 $a+bj, \ j=\sqrt {-2}$,如果它只能被1.-1.本身和本身的相反数整除,则输出Yes,否则输出No. 分析 高斯整数 $a+bi$ 是素数当且仅当: (1)$a, ...
- centos定时删除log文件
#!bin/bash #获取年 time=$(date "+%Y") #查找并删除7天前的文件 find /opt/applog/travelsky -type f -mtime ...
- cocos2dx+KinectV2 体感游戏之微信打飞机
https://download.csdn.net/download/qq_34609108/10038417 https://blog.csdn.net/qq_34609108/article/de ...
- PATA1077Kuchiguse
需要注意的有关于二维字符串数组的输入问题,先是定义要多留一位用于存放'\0' 还有就是使用scanf后,会有回车换行符,如果要使用gets或是接下来的方式代替gets,记得加上getchar,不然会出 ...
- ZROI 暑期高端峰会 A班 Day1 组合计数
AGC036F Square Constriants 一定有 \(l_i<p_i\le r_i\). 考虑朴素容斥,枚举每个数是 \(\le l_i\) 还是 \(\le r_i\).对于 \( ...
- TCP/IP协议族体系结构:死也不能忘记的四个层
1.死也不能忘记的四个层 ①数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介(比如以太网.令牌环等)上的传输.主要的协议ARP和RARP经过数据链路层封装的数据成为帧,有以太网帧.令牌环帧 ...
- java 压缩图片(只缩小体积,不更改图片尺寸)
1.情景展示 在调用腾讯身份证OCR接口的时候,由于要求图片大小只能限制在1MB以内,这样,就必须使用到图片压缩技术 2.代码展示 /** * 图片处理工具类 * @explain * @auth ...
- Golang(四)正则表达式使用
0. 前言 最近用到了 regexp 包,下面整理下正则表达式相关用法 参考 基础知识 - Golang 中的正则表达式 和 Golang regexp包中的函数和方法 做了汇总 1. 正则表达式 1 ...