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教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
Python编程语言的35个与众不同之处(语言特征和使用技巧)
Jul 07 Python
基于scrapy实现的简单蜘蛛采集程序
Apr 17 Python
Python3.x中自定义比较函数
Apr 24 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
简单解析Django框架中的表单验证
Jul 17 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
python实现电脑自动关机
Jun 20 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
int在python中的含义以及用法
Jun 27 Python
对django views中 request, response的常用操作详解
Jul 17 Python
Django media static外部访问Django中的图片设置教程
Apr 07 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中实现简单的ACL 完结篇
2011/09/07 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
php中长文章分页显示实现代码
2012/09/29 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
prototype1.4中文手册
2006/09/22 Javascript
图像替换新技术 状态域方法
2010/01/28 Javascript
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
浅谈JS继承_寄生式继承 & 寄生组合式继承
2016/08/16 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
女大学生自我鉴定
2013/12/09 职场文书
婚纱店策划方案
2014/05/22 职场文书
优秀班集体先进事迹材料
2014/05/28 职场文书
关于诚信的活动方案
2014/08/18 职场文书
企业领导对照检查材料
2014/08/20 职场文书
高中军训的心得体会
2014/09/01 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
售房协议书范本2014
2014/10/23 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
Java如何实现树的同构?
2021/06/22 Java/Android