Django3.2边学边记—Adimn站点管理
准备工作
创建管理员的用户名和密码:
python manage.py createsuperuser
根据提示创建用户名 密码
在admin.py中注册模型类
from django.contrib import admin
from models import Test class TestAdmin(admin.ModleAdmin):
pass admin.site.register(Test,TestAdmin)
浏览器端登录页面:类似以下后缀
http://127.0.0.1:8000/admin/
管理页面显示
创建模型管理类来管理某个模型在后台显示的页面形式
ModelAdmin类可以控制不同模型在Admin界面中的展示方式,主要包括在列表页的展示方式、添加修改页的展示方式
上文中展示了TestAdmin类的一种注册方法,还有一种方法,就是使用装饰器注册,如下:
@admin.register(Test)
class TestAdmin(admin.ModelAdmin):
pass
页大小
每页中显示多少条数据,默认为每页显示100条数据,设置为20
class TestAdmin(admin.ModelAdmin):
list_per_page = 20
操作选项的位置

由action_on_bottom 和action_on_top两属性来控制 默认显示在顶部,默认值分别为:False 和 True,改为只显示在底部:
class TestAdmin(admin.ModelAdmin):
list_per_page = 20
actions_on_bottom = True
actions_on_top = False
显示哪些列
用 list_display=[模型字段1,模型字段2,模型方法1,...] 控制显示的列,Django 会尝试按照这个顺序解释 list_display 的每个元素:
- 一个模型的字段。
- 一个可调用对象。
- 一个代表
ModelAdmin属性的字符串。 - 一个代表模型属性的字符串。
用模型属性显示 模型的id title pub_date 三个属性
class TestAdmin(admin.ModelAdmin):
...
list_display = ['id','title','pub_date']
或者模型方法,要求方法有返回值,如下在模型类中定义一个方法
class TestInfo(models.Model):
...
def atitle(self):
return self.title
按以上方法显示的列是不能排序的,如果让这个方法显示的列也能排序,就给atitle方法的.admin_order_field属性,指定排序依据的模型属性,如下:
# from django.db import models
# from django.contrib import admin
class TestInfo(models.Model):
...
def atitle(self):
return self.title
atitle.admin_order_field = 'title' #注意有引号
列标题
默认为方法的名称,
可以通过.short_description属性设置
class TestInfo(models.Model):
...
atitle.short_description='标题'
如果是更改模型字段显示的列标题,可以在定义模型字段时,设置verbose_name的值 ,或者封装成方法,再对方法使用上面那个属性,模型字段不能直接使用那个属性。
class Test(models.Model):
title = models.CharField(max_length=20,verbose_name='标题')
如果一个字段的值是 None,一个空字符串,或者一个没有元素的可迭代字段,Django 将显示 - (破折号)。
你可以用empty_value_display 属性更改
from django.contrib import admin
...
atitle.empty_value_display = '(None)'
或者管理类中设置属性
class PersonAdmin(admin.ModelAdmin):
empty_value_display = 'unknown'
以上通过指定方法属性来控制显示是新老版本通用的,在Django3.2可以通过给装饰器传参来解决
from django.db import models
from django.contrib import admin class Test(models.Model):
.... """
empty_value:属性值为空时 处理
description:显示名
ordering:排序依据
boolean:返回值为bool型
其中:
empty_value 和 boolean 只能设置一个(互斥)
"""
@admin.display(empty_value='空', description='父级地名', ordering='id',boolean=True)
def title2(self):
return self.title
过滤器
用 list_filter 来激活管理更改列表页面右侧侧栏的过滤器,如下截图所示:
list_filter 应是一个元素的列表或元组,会将对应字段的值列出来,一般用于快速过滤有重复值的字段
class TestAdmin(admin.ModelAdmin):
list_filter = ['is_delete']
搜索框
用 search_fields,在管理启用搜索框。
class TestAdmin(admin.ModelAdmin):
search_fields = ['id','name']
在搜索框中进行搜索时,Django 会将搜索查询拆分成多个词,并返回所有包含这些词的对象,不区分大小写(即 icontains 查找:不区分大小写的包含匹配),其中每个词必须在 search_fields 中至少有一个。例如,如果 search_fields 设置为 ['first_name', 'last_name'],用户搜索 john lennon',Django 会做相当于这个 SQL WHERE 子句。
WHERE (first_name ILIKE '%john%' OR last_name ILIKE '%john%')
AND (first_name ILIKE '%lennon%' OR last_name ILIKE '%lennon%')
搜索查询可以包含带空格的引号短语。我的理解就是分组整体匹配(Django3.2新增),例如,如果用户搜索 "john winston" 或 'john winston',Django 会做相当于这个 SQL 的 WHERE 子句:
WHERE (first_name ILIKE '%john winston%' OR last_name ILIKE '%john winston%')
如果你不想使用 icontains 查找方式,你可以使用 ModelAdmin.get_search_results() 来提供额外的或替代的搜索行为。
Django3.2边学边记—Adimn站点管理的更多相关文章
- Django笔记 —— Admin(Django站点管理界面)
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- xadmin站点管理类
9. Xadmin xadmin是Django的第三方扩展,比使用Django的admin站点更强大也更方便. 文档:https://xadmin.readthedocs.io/en/latest/i ...
- [译]MVC网站教程(三):动态布局和站点管理
目录 1. 介绍 2. 软件环境 3. 在运行示例代码之前(源代码 + 示例登陆帐号) 4. 自定义操作结果和控制器扩展 1) OpenFileResult 2) ImageR ...
- django站点管理
一.启动django站点管理功能 1.关于django.contrib包 包含了django自带的众多附加组件,主要包括: 1)管理工具: django.contrib.admin 2)用 ...
- fileziller 恢复 站点管理器 内的ftp帐号方法
由于系统坏了重装了系统,以前的fileziller中配置的服务器链接信息列表很多,新装fileziller后即使复制以前的安装目录过来,站点管理器内还是空荡荡的. 这些服务器链接的配置信息非常重要,如 ...
- 通用性站点管理后台(Bee OPOA Platform)
当前标签: Bee OPOA Platform 通用性站点管理后台(Bee OPOA Platform) (5)- [扩展]基于WebSocket的监视Sql执行功能 蜂 2013-10-25 1 ...
- 开源 免费 java CMS - FreeCMS1.4-功能说明-站点管理
下载地址:http://code.google.com/p/freecms/ 站点管理 FreeCMS支持网站群模式,并支持无限树级管理. 1. 添加一级站点 从左侧管理菜单点击站点管理进入. 提示 ...
- Java语言实现简单FTP软件------>辅助功能模块FTP站点管理的实现(十二)
1.FTP站点管理 点击"FTP站点管理"按钮,弹出对话框"FTP站点管理",如下图 1) 连接站点 在FTP站点管理面板上选好要连接的站点,点击"连 ...
- Linux下使用 github+hexo 搭建个人博客07-next主题接入搜索和站点管理
这是搭建个人博客系统系列文章的最后一篇,如果你是从第一篇一路跟下来的,那么恭喜你,即将完成整个博客网站的搭建.OK,话不多说,开始我们的收官之战. 不知你想过没有,如果我们的文章少,一眼看完整个目录, ...
随机推荐
- pikachu Over Permission
Over Permission 如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作. 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的. 一般越 ...
- zzcms2020代码审计笔记
在CNVD中看到zzcms后台sql注入漏洞: 漏洞细节未被公开,影响版本zzcms2020,本地搭建一套相同版本找一下漏洞触发点. 打开目录,后台ba***.php文件共有三个: 先看下bad.ph ...
- vue3 自己做一个轻量级状态管理,带跟踪功能,知道是谁改的,还能定位代码。
上一篇 https://www.cnblogs.com/jyk/p/14706005.html 介绍了一个自己做的轻量级的状态管理,好多网友说,状态最重要的是跟踪功能,不能跟踪算啥状态管理? 因为vu ...
- docker 安装部署 redis(配置文件启动)
获取 redis 镜像 docker pull redis:4.0.12 docker images 创建容器 创建宿主机 redis 容器的数据和配置文件目录 # 创建宿主机 redis 容器的数据 ...
- uwp 之后台音频
C# code 后台任务 ---------------------------- public sealed class BgTask : IBackgroundTask { #region 私有字 ...
- 自旋锁&信号量
1. 自旋锁 Linux内核中最常见的锁是自旋锁.一个自旋锁就是一个互斥设备,它只能有两个值:"锁定"和"解锁".如果锁可用,则"锁定"位被 ...
- C程序设计学习笔记(完结)
时间:2015-4-16 09:17 不求甚解,每有会意,欣然忘食.学习的过程是痛苦的 第1章 程序设计和C语言 第2章 算法--程序的灵魂 -算法的五个特点 ...
- Go与接口:接口即约定
接口 接口类型是对其他类型行为的概括与抽象.我们可以通过接口来约定某一类通用行为.Go语言的接口是隐式的:只要实现接口A的所有方法就代表实现了接口A. 接口即约定 接口是什么样的? package i ...
- Go版本管理--go.sum
目录 1. 简介 2. go.sum文件记录 3. 生成 4.校验 5.校验和数据库 1. 简介 为了确保一致性构建,Go引入了go.mod文件来标记每个依赖包的版本,在构建过程中go命令会下载go. ...
- 分布式协调组件Zookeeper之 选举机制与ZAB协议
Zookeeper简介: Zookeeper是什么: Zookeeper 是⼀个分布式协调服务的开源框架. 主要⽤来解决分布式集群中应⽤系统的⼀致性问题, 例如怎样避免同时操作同⼀数据造成脏读的问题. ...