自定义 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 样式与功能的更多相关文章

  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. 网络编程 TCP协议:三次握手,四次回收,反馈机制 socket套接字通信 粘包问题与解决方法

    TCP协议:传输协议,基于端口工作 三次握手,四次挥手 TCP协议建立双向通道. 三次握手, 建连接: 1:客户端向服务端发送建立连接的请求 2:服务端返回收到请求的信息给客户端,并且发送往客户端建立 ...

  2. opencart 3 配置阿里邮箱smtp实测可用

    最近ytkah在做一个客户的opencart项目时,配置阿里邮箱smtp一直收不到邮件,修改了很多配置文件也不起作用,今天再继续调试终于成功了,下面把所有步骤都记录下来,希望能帮到碰到同样问题的朋友们 ...

  3. Navicat Premium永久激活方式

    今天安装完Navicat Premium,运行时出现只能用14天的信息,所以就比较生气,只能用14天,那我还下你干啥,所以就查教程,弄了个破解工具,最后大功告成,应该是可以永久使用了,具体的教程看下 ...

  4. ActiveMQ消息可靠性-事物

    事物偏生产者,签收偏消费者 设置为true,需要手动提交    设置为false,自动提交   使用手动提交的好处就是可以回滚,当整个事物提交时,里面的某条失败了,可以事物回滚,于是保证了数据的一致性 ...

  5. centos virtualbox虚拟机无法连接外网

    各种方法都试了,不好使. 最后重启了很多次,最后一次成功了... ----详情---- 发生的原因是因为突然断电导致的异常. 先通过systemctl restart network 来启动,结果报错 ...

  6. Random Access Iterator 徐州网络赛(树形dp)

    Random Access Iterator \[ Time Limit: 4000 ms \quad Memory Limit: 262144 kB \] 题意 给出伪代码,问按着伪代码在树上跑,能 ...

  7. LeetCode 622. Design Circular Queue

    原题链接在这里:https://leetcode.com/problems/design-circular-queue/ 题目: Design your implementation of the c ...

  8. python paramiko模块简介及安装

    一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...

  9. javaScript与css、html常见的兼容

    最近几天总是遇到兼容问题,就整理了一下javaScript和html.css出现的常见兼容.有不全面或不对的欢迎大家指正.也希望这条博客可以帮到一些刚学习的前端的朋友. 一.javaScript出现的 ...

  10. mac Sublime Text 快捷键

    mac Sublime Text 快捷键 Tab: 光标后缩进 Shift+Tab: 反缩进 cmd+P: 打开文件切换面板 cmd+/: 行注释 cmd+R: 快速列出/跳转到某个函数 双击可选中光 ...