Django 中自定义 Admin 样式与功能的实现方法


Posted in Python onJuly 04, 2019

自定义 Admin 样式与功能

1 页面修改中文

1.1 语言设置为中文

settings.py

LANGUAGE_CODE = 'zh-hans'

修改结果

Django 中自定义 Admin 样式与功能的实现方法

1.2 应用管理设置为中文

应用/apps.py

from django.apps import AppConfig
class BbssConfig(AppConfig):
 name = 'bbs'
 # 添加下面这句
 verbose_name = 'BBS系统'

修改结果

Django 中自定义 Admin 样式与功能的实现方法

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 = '评论' # 复数时显示内容

默认数据库表在后台中显示都为复数形式,而中文没有复数形式,因此将两种形式都设置为相同名称

修改结果

Django 中自定义 Admin 样式与功能的实现方法

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,并且关键字参数要放在位置参数后面

修改结果

Django 中自定义 Admin 样式与功能的实现方法

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

Django 中自定义 Admin 样式与功能的实现方法

自动生成

Django 中自定义 Admin 样式与功能的实现方法

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

Django 中自定义 Admin 样式与功能的实现方法

2.5 自定义标题

settings.py 中添加

# 后台自定义标题
GRAPPELLI_ADMIN_TITLE = 'Z-BBS ADMIN'

刷新页面

Django 中自定义 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

Django 中自定义 Admin 样式与功能的实现方法

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 中自定义 Admin 样式与功能的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
简单介绍Python的Django框架的dj-scaffold项目
May 30 Python
Python使用minidom读写xml的方法
Jun 03 Python
编写Python CGI脚本的教程
Jun 29 Python
Python3 模块、包调用&路径详解
Oct 25 Python
python实现装饰器、描述符
Feb 28 Python
python如何给字典的键对应的值为字典项的字典赋值
Jul 05 Python
python基于json文件实现的gearman任务自动重启代码实例
Aug 13 Python
python深copy和浅copy区别对比解析
Dec 26 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
python利用tkinter实现图片格式转换的示例
Sep 28 Python
python 实现的截屏工具
May 08 Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 #Python
python中比较两个列表的实例方法
Jul 04 #Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 #Python
远程部署工具Fabric详解(支持Python3)
Jul 04 #Python
Python之修改图片像素值的方法
Jul 03 #Python
在python中,使用scatter绘制散点图的实例
Jul 03 #Python
python opencv 二值化 计算白色像素点的实例
Jul 03 #Python
You might like
php模板之Phpbean的目录结构
2008/01/10 PHP
php flush类输出缓冲剖析
2008/10/19 PHP
浅析php header 跳转
2013/06/17 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
Html中JS脚本执行顺序简单举例说明
2010/06/19 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
Python获取系统默认字符编码的方法
2015/06/04 Python
Python回调函数用法实例详解
2015/07/02 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
Python3连接SQLServer、Oracle、MySql的方法
2018/06/28 Python
python处理“
2019/06/10 Python
python3中类的继承以及self和super的区别详解
2019/06/26 Python
Python list运算操作代码实例解析
2020/01/20 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
25道Java面试题集合
2013/05/21 面试题
股权收购意向书
2014/04/01 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书