自定义 Admin 样式与功能

1 页面修改中文

1.1 语言设置为中文

settings.py

  1. LANGUAGE_CODE = 'zh-hans'

修改结果

1.2 应用管理设置为中文

应用/apps.py

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

修改结果

1.3 数据库表设置为中文

应用/models.py

  1. class Comment(models.Model):
  2. topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
  3. comment_text = models.TextField(max_length=2000)
  4. author = models.ForeignKey(User, default=1, on_delete=models.CASCADE)
  5. picture = models.FileField(blank=True, null=True) # 添加文件类型字段,并默认为空
  6. pub_date = models.DateTimeField(auto_now_add=True)
  7. def get_comment_text_md(self):
  8. """将markdown格式转化为html"""
  9. return mark_safe(markdown(self.comment_text))
  10. def __str__(self):
  11. return self.comment_text
  12. class Meta:
  13. verbose_name = '评论' # 单数时显示内容
  14. verbose_name_plural = '评论' # 复数时显示内容

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

修改结果

1.4 数据库表字段名称修改为中文

应用/models.py

  1. class Comment(models.Model):
  2. topic = models.ForeignKey(Topic, on_delete=models.CASCADE, verbose_name='话题')
  3. comment_text = models.TextField('评价内容', max_length=2000)
  4. author = models.ForeignKey(User, default=1, on_delete=models.CASCADE, verbose_name='用户')
  5. picture = models.FileField('图片', blank=True, null=True) # 添加文件类型字段,并默认为空
  6. pub_date = models.DateTimeField('发布时间', auto_now_add=True)
  7. def get_comment_text_md(self):
  8. """将markdown格式转化为html"""
  9. return mark_safe(markdown(self.comment_text))
  10. def __str__(self):
  11. return self.comment_text
  12. class Meta:
  13. verbose_name = '评论' # 单数时显示内容
  14. 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 安装

  1. pip install django-grappelli

2.2 导入项目

settings.py

  1. INSTALLED_APPS = [
  2. 'accounts.apps.AccountsConfig',
  3. 'polls.apps.PollsConfig',
  4. 'bbs.apps.BbssConfig',
  5. 'grappelli',
  6. 'django.contrib.admin',
  7. 'django.contrib.auth',
  8. 'django.contrib.contenttypes',
  9. 'django.contrib.sessions',
  10. 'django.contrib.messages',
  11. 'django.contrib.staticfiles',
  12. ]

2.3 导入URL

项目 / urls.py

  1. urlpatterns = [
  2. path('grappelli', include('grappelli.urls')),
  3. path('admin/', admin.site.urls),
  4. path('', include('bbs.urls')),
  5. path('accounts/', include('accounts.urls')),
  6. ]

2.4 收集静态文件统一放到一个地方

settings.py 中添加

  1. # 收集静态文件统一存放的根路径
  2. STATIC_ROOT = os.path.join(BASE_DIR, 'static-files')

执行命令

  1. python manage.py collectstatic

自动生成

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

2.5 自定义标题

settings.py 中添加

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

刷新页面

2.6 admin开启分页功能

应用 / admin.py

  1. from django.contrib import admin
  2. # Register your models here.
  3. from .models import Topic, Comment
  4. class TopicAdmin(admin.ModelAdmin):
  5. list_display = ('topic_text', 'author', 'pub_date')
  6. search_fields = ('topic_text', 'author')
  7. list_editable = ('author',)
  8. list_per_page = 10
  9. class CommentAdmin(admin.ModelAdmin):
  10. list_display = ( 'comment_text', 'author', 'pub_date', 'topic')
  11. search_fields = ('comment_text', 'author')
  12. list_editable = ('author',)
  13. list_per_page = 10

2.7 admin 开启过滤功能

应用 / admin.py

  1. class TopicAdmin(admin.ModelAdmin):
  2. list_display = ('topic_text', 'author', 'pub_date')
  3. list_filter = ('topic_text', 'author', 'pub_date')
  4. search_fields = ('topic_text',)
  5. list_editable = ('author',)
  6. list_per_page = 10
  7. class CommentAdmin(admin.ModelAdmin):
  8. list_display = ( 'comment_text', 'author', 'pub_date', 'topic')
  9. list_filter = ('comment_text', 'author', 'pub_date', 'topic')
  10. search_fields = ('comment_text',)
  11. list_editable = ('author',)
  12. list_per_page = 10

开启之后记得强制刷新页面(ctrl + shift + r),重新加载 js 和 css 代码

Django 中自定义 Admin 样式与功能的更多相关文章

  1. Django 中自定义用户模型及集成认证授权功能总结

    1. 概述 Django 中的 django.contrib.auth 应用提供了完整的用户及认证授权功能. Django 官方推荐基于内置 User 数据模型创建新的自定义用户模型,方便添加 bir ...

  2. Django中自定义admin---Xadmin的实现

    在Django框架中,自带一个后台管理页面admin,这个管理页面很全,但是,有些并不是我们需要的,所以我们可以根据admin的实现流程来自定义自己的需求,即根据admin的实现方式来实现自定制--X ...

  3. Django中的admin组件分析

    admin的使用介绍 django-admin的使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.可以在项目的 setting ...

  4. [转]Android中自定义checkbox样式

    android中自定义checkbox的图片和大小   其实很简单,分三步: 1.在drawable中创建文件checkbox_selector.xml: <?xml version=" ...

  5. Django中的admin

    1.基本知识 在用Django框架写了一个网站之后,我们添加数据大概有两种方式: 1.在连接的数据库中添加数据 2.登录admin,进入后台添加数据 创建一个Django项目后,我们在url.py中会 ...

  6. Android中自定义checkbox样式

    1.首先在drawable文件夹中添加drawable文件checkbox_style.xml.

  7. Django中自定义模型管理器(Manager)及方法

    1.自定义管理器(Manager) 在语句Book.objects.all()中,objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager.每个Django模型至少有一个ma ...

  8. django中自定义标签和过滤器

    想要实现自定义标签和过滤器需要进行准备工作: 准备(必需)工作: 1  在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为polls的app下创建了一个tem ...

  9. Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失)

    一.需求触发场景: 项目中需要出发带有EditText的Dialog显示,要求在编辑完EditText时,点击Dilog的空白处隐藏软键盘.但是Dialog不会消失.示例如下: 二.实现方法: 发布需 ...

随机推荐

  1. linux修改服务器时区并使用所选时区的时间

    linux 修改服务器时区并使用所选时区的时间(以 ubuntu18.04 修改为美国芝加哥时区为例) 一.修改时区    /usr/bin/tzselect        1.选择地区, 美洲地区: ...

  2. centos7删除Apache组件

    非特殊需要不要删除centos7中Apache等组件!首先查看centos中Apache版本(前面我们说了centos7删除PHP,centos7删除MariaDB,可能很多朋友会有疑问为什么要把所有 ...

  3. 每天一道Rust-LeetCode(2019-06-01)

    每天一道Rust-LeetCode(2019-06-01) 坚持每天一道题,刷题学习Rust. 题目描述 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的, ...

  4. 在eclipse中新建java问题报错:The type XXX cannot be resolved. It is indirectly referenced from required .class files

    在Eclipse中遇到The type XXX cannot be resolved. It is indirectly referenced from required .class files错误 ...

  5. concurrent(七)ConcurrentHashMap源码分析

    参考文档:https://www.cnblogs.com/xiaoxi/p/7474026.html https://www.ibm.com/developerworks/cn/java/java-l ...

  6. Gamma展示

    团队成员简介 团队成员 角色 个人博客地址 刘峻辰 后端开发 刘峻辰 焦云鹏 后端开发 焦云鹏 赵智源 测试&服务器部署 赵智源 肖萌威 前端开发 肖萌威 杨亦鑫 前端开发 杨亦鑫 戴荣 UI ...

  7. AQS1---走向稳定态

    AQS的思想(稳定思想):即使确定了正常节点,这个节点也可能下一秒异常,即使找到了正常节点,这个节点可能只是异常status=0/-1的节点,这些都不要紧,都只是在自己旋转‘生命周期’里面和自己所看到 ...

  8. @Valid参数验证 BindingResult result 的使用

    1.首先导入依赖包bean-validator.jar2.在实体类上面写一些相关的验证信息:可以搜索更多的一些验证方式,这只是一部分 可以参考:点击打开链接http://blog.csdn.net/c ...

  9. Django 模板语言 条件判断

    Django 模板语言 条件判断 ############### 条件 ################## # view 文件 def func(request): ... return rende ...

  10. 【题解】【网络流24题】航空路线问题 [P2770] [Loj6122]

    [题解][网络流24题]航空路线问题 [P2770] [Loj6122] 传送门:航空路线问题 \([P2770]\) \([Loj6122]\) [题目描述] 给出一张有向图,每个点(除了起点 \( ...