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 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
查看django版本的方法分享
May 14 Python
利用python和百度地图API实现数据地图标注的方法
May 13 Python
Python字典推导式将cookie字符串转化为字典解析
Aug 10 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
Oct 17 Python
python set集合使用方法解析
Nov 05 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
实例讲解Python 迭代器与生成器
Jul 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 VS ASP
2006/10/09 PHP
一个数据采集类
2007/02/14 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
js分页工具实例
2015/01/28 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
JS实现自动定时切换的简洁网页选项卡效果
2015/10/13 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
BootStrop前端框架入门教程详解
2016/12/25 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
jQuery 选择器用法基础入门示例
2020/01/04 jQuery
python实现的简单窗口倒计时界面实例
2015/05/05 Python
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
使用requests库制作Python爬虫
2018/03/25 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python装饰器用法实例分析
2019/01/14 Python
Python3.4解释器用法简单示例
2019/03/22 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
保证书格式范文
2014/04/28 职场文书
优质服务演讲稿
2014/05/14 职场文书
法人代表任命书范本
2014/06/05 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
现役军人家属慰问信
2015/03/24 职场文书
创业计划书之外语培训班
2019/11/02 职场文书