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

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

(0)

相关推荐

  • Django使用 Bootstrap 样式修改书籍列表过程解析

    展示书籍列表: 首先修改原先的 book_list.html 的代码: <!DOCTYPE html> <!-- saved from url=(0042)https://v3.bootcss.com/examples/dashboard/ --> <html lang="zh-CN"> <head> <meta http-equiv="Content-Type" content="text/html;

  • BootStrap扔进Django里的方法详解

    因为django的版本差异化比较大,所以以下配置仅供学习参考. D:\www\mysite>python --version Python 2.7.5 >>> print django.__version__ 1.9.4 本记录不作细说,主要配置过程如下: 1.settings.py最后一段,关于静态文件的配置 # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.9/howto

  • Django admin实现图书管理系统菜鸟级教程完整实例

    Django 有着强大而又及其易用的admin后台,在这里,你可以轻松实现复杂代码实现的功能,如搜索,筛选,分页,题目可编辑,多选框. 简单到,一行代码就可以实现一个功能,而且模块之间耦合得相当完美. 不信,一起来看看吧!?用Django实现管理书籍的系统,并能在前台界面对书籍进行增删查改,筛选,分页,以及批量查询修改功能. 准备工作 #准备好你的数据库模型思维导图 0.新建一个Django项目,起名为books,并且同时新建一个应用book11 1.首先要设置models模块,根据思维导图,我

  • Django自定义分页与bootstrap分页结合

    django中有自带的分页模块Paginator,想Paginator提供对象的列表,就可以提供每一页上对象的方法. 这里的话不讲解Paginator,而是自定义一个分页类来完成需求: class Pagination(object): """用于Model字段值的选择""" def __init__(self): pass @classmethod def create_pagination(self, from_name='', model_

  • python设计微型小说网站(基于Django+Bootstrap框架)

    一.项目背景: 为了回顾关于django的文件上传和分页功能,打算写一个微型的小说网站练练手.花了一个下午的时间,写了个小项目,发现其中其实遇到了许多问题,不过大部分通过debug之后就解决了,其他部分通过阅读了Pagination插件以及Bootstrap-FileInput插件的官方文档. 二.详细设计: 省去小说网站的用户模块的功能,小说网站主要的功能就是上传文件,在线阅读小说.针对这两个功能, 主要用到dajngo内置的Pagination模块,以及选择一个上传文件插件即可.因为用的是B

  • Django框架搭建的简易图书信息网站案例

    本文实例讲述了Django框架搭建的简易图书信息网站.分享给大家供大家参考,具体如下: 创建Django项目,将数据库改为mysql,修改项目的urls.py文件 创建一个新应用,在应用里创建urls.py文件. 在应用的models.py里建表 from django.db import models # Create your models here. #一类 class BookInfo(models.Model): btitle=models.CharField(max_length=2

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

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

  • Django 中自定义 Admin 样式与功能

    Django 中自定义 Admin 样式与功能 自定义 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系统' 修

  • Django中自定义admin Xadmin的实现代码

    在Django框架中,自带一个后台管理页面admin,这个管理页面很全,但是,有些并不是我们需要的,所以我们可以根据admin的实现流程来自定义自己的需求,即根据admin的实现方式来实现自定制--Xadmin 首先,我们先解析admin的流程,在Django中,我们在创建项目的时候,Django自带一个admin的url,实现了不同模型表的增删改查,那么admin是如何实现url的分发的? 我们可以从三部分来看admin的路由分发实现 1,启动 我们可以通过from django.contri

  • django中账号密码验证登陆功能的实现方法

    今天分享一下django的账号密码登陆,前端发送ajax请求,将用户名和密码信息发送到后端处理,后端将前端发送过来的数据跟数据库进行过滤匹配,成功就跳转指定页面,否则就把相对应的错误信息返回,同时增加一个小功能,在规定时间内超过规定的登录次数,就锁住无法登陆,等下一个时间段再允许登陆. 一.通过ORM创建一张历史登陆表 class login_history(models.Model): user = models.CharField(max_length=32, verbose_name='登

  • Android 中自定义Dialog样式的Activity点击空白处隐藏软键盘功能(dialog不消失)

    一.需求触发场景: 项目中需要开发带有EditText的Dialog显示,要求在编辑完EditText时,点击Dilog的空白处隐藏软键盘.但是Dialog不会消失.示例如下: 二.实现方法: 发布需求时,我个人曾想过直接通过new的方式直接创建Dialog,经过多次尝试,无法实现要求,所以采用将Activity设置为Dialog样式进行展示,调用方法实现需求.具体实现如下: 本次演示示例的工程结构: 2.1AndroidMainfest.xml配置文件 需要在配置文件中将需要显示为dialog

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

    1.自定义管理器(Manager) 在语句Book.objects.all()中, objects 是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager. 每个Django模型至少有一个manager,你可以创建自定义manager以定制数据库的访问. 这里有两个方法创建自定义manager:添加额外的manager;修改manager返回的初始Queryset. 添加额外的manager 增加额外的manager是为模块添加 表级功能 的首选办法.(至于 行级功能 ,也就是只作

  • 在Django中自定义filter并在template中的使用详解

    Django内置的filter有很多,然而我们由于业务逻辑的特殊要求,有时候仍然会不够用,这个时候就需要我们自定义filter来实现相应的内容.接下来让我们从自定义一个get_range(value)来产生列表的filter开始吧. 首先在你的django app的models.py的同级目录建立一个templatetags的文件夹,并在里面新建一个init.py的空文件,这个文件确保了这个文件夹被当做一个python的包.在添加了templatetags模块之后,我们需要重新启动服务器才能使其

  • 在django中自定义字段Field详解

    Django的Field类中方法有: to_python() # 把数据库数据转成python数据 from_db_value() # 把数据库数据转成python数据 get_pre_value() # 把python数据压缩准备存入数据库 get_db_pre_value() # 把压缩好的数据转成数据库查询集 get_prep_lookup() # 指定过滤的条件 value_to_string() # 数据序列化 如果创建的Field比字符串,日期,整数等更复杂的数据结构,可能需要重写t

  • 在django中使用apscheduler 执行计划任务的实现方法

    对于任何软件开发人员而言,为将来计划任务都是必不可少的工具. 尽管我们创建的许多编程旨在响应明确的触发或用户事件,但定期执行的后台进程也同样重要. "每个星期一早晨更新结果." "每天晚上分批下单." 甚至具有每日请求限制的第三方API也隐式要求这种行为. "我们只能每五分钟请求一次更新." 幸运的是,许多聪明的人已经解决了这个问题,并且不难找到python本地解决方案. Advanced Python Scheduler(APS)是一个很好的选

  • 浅谈keras中自定义二分类任务评价指标metrics的方法以及代码

    对于二分类任务,keras现有的评价指标只有binary_accuracy,即二分类准确率,但是评估模型的性能有时需要一些其他的评价指标,例如精确率,召回率,F1-score等等,因此需要使用keras提供的自定义评价函数功能构建出针对二分类任务的各类评价指标. keras提供的自定义评价函数功能需要以如下两个张量作为输入,并返回一个张量作为输出. y_true:数据集真实值组成的一阶张量. y_pred:数据集输出值组成的一阶张量. tf.round()可对张量四舍五入,因此tf.round(

随机推荐