【参考】https://blog.csdn.net/u010132177/article/details/103814357

【参考】https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial07/#customize-the-admin-change-list

1. 后台管理页面:列表选项http://127.0.0.1:8000/admin/app2/

  • html文档教程里有列表选项详细条目

1)app2/models.py

from django.db import models

class AreaInfo(models.Model):
'''地址模型类'''
class Meta: #自定义表名为bookinfo(因为用的是之前示例的数据库表,它的名字是默认配置的app1_bookinfo)
db_table = 'app1_areainfo'
# 地区名称
atitle = models.CharField(verbose_name='标题', max_length=20)
# 自关联属性
aParent = models.ForeignKey('self', null=True, blank=True,verbose_name='上级',on_delete=models.CASCADE) def __str__(self):#把标题做为类返回名(areainfo)
return self.atitle def title(self): #自定义一个方法返回地区名
return self.atitle
title.admin_order_field = 'atitle' #定义排序(默认自定的title是无法点它标题进行排序的)
title.short_description = '地区名称' #定义显示名 def parent(self):#自定义一个方法返回父地区名
if self.aParent is None: #如果父级为空则返回空(无此步会报错)
return ''
return self.aParent.atitle #父级存在则返回其父级名
parent.short_description = '父级地区名称' #定义显示名

2)admin.py

from django.contrib import admin
from app2.models import BookInfo,AreaInfo #【1】导入模型下的表
# Register your models here. class AreaInfoAdmin(admin.ModelAdmin):
'''地区模型管理类'''
list_per_page = 10 # 【2】指定每页显示10条数据
list_display = ['id', 'atitle', 'title', 'parent'] #【3】指定后台列表显示列
actions_on_bottom=True #【6】底部显示删除动作选项
actions_on_top=False #【7】删除头部动作选项
list_filter = ['atitle','aParent'] # 【8】列表页右侧过滤栏
search_fields = ['atitle'] # 【9】列表页上方的搜索框 admin.site.register(AreaInfo,AreaInfoAdmin) #【4】注册导入进来的AreaInfo,和刚写的类名AreaInfoAdmin
admin.site.register(BookInfo) #【5】注册图书类

3)登录后台:http://127.0.0.1:8000/admin/app2/areainfo/

4)【删除动作】显示隐藏(app2/admin.py)

【6】底部显示删除动作选项

【7】删除头部动作选项

from django.contrib import admin
from app2.models import BookInfo,AreaInfo #【1】导入模型下的表
# Register your models here. class AreaInfoAdmin(admin.ModelAdmin):
'''地区模型管理类'''
list_per_page = 10 # 【2】指定每页显示10条数据
list_display = ['id', 'atitle', 'title', 'parent'] #【3】指定后台列表显示列
actions_on_bottom=True #【6】底部显示删除动作选项
actions_on_top=False #【7】删除头部动作选项
list_filter = ['atitle','aParent'] # 【8】列表页右侧过滤栏
search_fields = ['atitle'] # 【9】列表页上方的搜索框 admin.site.register(AreaInfo,AreaInfoAdmin) #【4】注册导入进来的AreaInfo,和刚写的类名AreaInfoAdmin
admin.site.register(BookInfo) #【5】注册图书类

效果:头部动作没了,底部动作出现。

5)显示头部【搜索框】、右侧【过滤栏】

【8】列表页右侧过滤栏,根据标题过滤,上级过滤

【9】列表页上方的搜索框,根据标题过滤,不要加上级,会出错

from django.contrib import admin
from app2.models import BookInfo,AreaInfo #【1】导入模型下的表
# Register your models here. class AreaInfoAdmin(admin.ModelAdmin):
'''地区模型管理类'''
list_per_page = 10 # 【2】指定每页显示10条数据
list_display = ['id', 'atitle', 'title', 'parent'] #【3】指定后台列表显示列
actions_on_bottom=True #【6】底部显示删除动作选项
actions_on_top=False #【7】删除头部动作选项
list_filter = ['atitle','aParent'] # 【8】列表页右侧过滤栏
search_fields = ['atitle'] # 【9】列表页上方的搜索框 admin.site.register(AreaInfo,AreaInfoAdmin) #【4】注册导入进来的AreaInfo,和刚写的类名AreaInfoAdmin
admin.site.register(BookInfo) #【5】注册图书类



2.后台管理页:编辑页选项http://127.0.0.1:8000/admin/app2/areainfo/110000/change/?_changelist_filters=o%3D1

1)位置调换(app2/admin.py)



fields = ['aParent', 'atitle'] 【10】编辑页显示位置控制

from django.contrib import admin
from app2.models import BookInfo,AreaInfo #【1】导入模型下的表
# Register your models here. class AreaInfoAdmin(admin.ModelAdmin):
'''地区模型管理类'''
list_per_page = 10 # 【2】指定每页显示10条数据
list_display = ['id', 'atitle', 'title', 'parent'] #【3】指定后台列表显示列
actions_on_bottom=True #【6】底部显示删除动作选项
actions_on_top=False #【7】删除头部动作选项
list_filter = ['atitle','aParent'] # 【8】列表页右侧过滤栏
search_fields = ['atitle'] # 【9】列表页上方的搜索框 fields = ['aParent', 'atitle'] #【10】编辑页显示位置控制 admin.site.register(AreaInfo,AreaInfoAdmin) #【4】注册导入进来的AreaInfo,和刚写的类名AreaInfoAdmin
admin.site.register(BookInfo) #【5】注册图书类

效果:

2)对编辑页面的条目进行分组

from django.contrib import admin
from app2.models import BookInfo,AreaInfo #【1】导入模型下的表
# Register your models here. class AreaInfoAdmin(admin.ModelAdmin):
'''地区模型管理类'''
list_per_page = 10 # 【2】指定每页显示10条数据
list_display = ['id', 'atitle', 'title', 'parent'] #【3】指定后台列表显示列
actions_on_bottom=True #【6】底部显示删除动作选项
actions_on_top=False #【7】删除头部动作选项
list_filter = ['atitle','aParent'] # 【8】列表页右侧过滤栏
search_fields = ['atitle'] # 【9】列表页上方的搜索框 #fields = ['aParent', 'atitle'] #【10】编辑页显示位置控制
#【11】对编辑页面的条目进行分组
fieldsets = (
('基本', {'fields':['atitle']}),
('高级', {'fields':['aParent']})
) admin.site.register(AreaInfo,AreaInfoAdmin) #【4】注册导入进来的AreaInfo,和刚写的类名AreaInfoAdmin
admin.site.register(BookInfo) #【5】注册图书类

3)关联对象

【1】先定义一个新类

【1-1】新类2

【2】使用

【22】使用

from django.contrib import admin
from app2.models import BookInfo,AreaInfo #导入模型下的表
# Register your models here.
#【1】先定义一个新类
class AreaStackedInline(admin.StackedInline):
# 写多类的名字
model = AreaInfo
extra = 2 #空白为2个
#【1-1】新类2
class AreaTabularInline(admin.TabularInline):
model = AreaInfo
extra = 2 class AreaInfoAdmin(admin.ModelAdmin):
'''地区模型管理类'''
list_per_page = 10 # 指定每页显示10条数据
list_display = ['id', 'atitle', 'title', 'parent'] #指定后台列表显示列
actions_on_bottom=True #底部显示删除动作选项
actions_on_top=False #删除头部动作选项
list_filter = ['atitle','aParent'] # 列表页右侧过滤栏
search_fields = ['atitle'] # 列表页上方的搜索框 #fields = ['aParent', 'atitle'] #编辑页显示位置控制
#对编辑页面的条目进行分组
fieldsets = (
('基本', {'fields':['atitle']}),
('高级', {'fields':['aParent']})
) inlines = [AreaStackedInline] #【2】使用
#inlines = [AreaTabularInline] #【2-2】使用 admin.site.register(AreaInfo,AreaInfoAdmin) #注册导入进来的AreaInfo,和刚写的类名AreaInfoAdmin
admin.site.register(BookInfo) #注册图书类

【2】注释掉2-2,显示2

【2-2】注释掉【2】

3.后台管理_自定义页面

1)在templates/目录下创建admin目录,结构如下图:

templates/admin/base_site.html

2)打开当前虚拟环境中Django的目录,再向下找到admin的模板,目录如下:

/home/python/.virtualenvs/py_django/lib/python3.5/site-packages/django/contrib/admin/templates/admin

3)将需要更改文件拷贝到第一步建好的目录里,此处以base_site.html为例。

templates/admin/base_site.html

编辑base_site.html文件:

{% extends "admin/base.html" %}

{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}

{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
<hr>
<h1>自定义的管理页模板</h1>
<hr>
{% endblock %} {% block nav-global %}{% endblock %}

4)在浏览器中转到列表页面,刷新后如下图:

Django(十八)后台管理:列表页选项、编辑页选项、自定义后台页面的更多相关文章

  1. vue3,后台管理列表页面各组件之间的状态关系

    技术栈 vite2 vue 3.0.5 vue-router 4.0.6 vue-data-state 0.1.1 element-plus 1.0.2-beta.39 前情回顾 表单控件 查询控件 ...

  2. vue+h-ui+layUI完成列表页及编辑页

    最近做一个新项目,用H-ui做后台, 比较喜欢他的模仿bootsharp的栅格和表单样式. 感觉不好的是iframe加载速度比较慢. 这里在原有的H-ui页面基础上加入用vue来绑数据,用的还可以. ...

  3. 攻城狮在路上(壹) Hibernate(十八)--- 管理Hibernate的缓存

    一般Session的缓存被称为Hibernate的第一级缓存,SessionFactory的外置缓存是一个可配置的缓存插件,称为Hibernate的第二级缓存.一.缓存的基本原理: 1.持久化层的缓存 ...

  4. python3笔记十八:python列表元组字典集合文件操作

    一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle  #数据持久性模块 #封装的方法def OptionData(data,path):    # ...

  5. django学习-19.admin管理后台的配置和登录

    目录结构 1.前言 2.admin管理后台的配置和登录的完整操作流程 2.1.第一步: 在[settings.py]里对常量[INSTALLED_APPS]的值进行相关配置 2.2.第二步: 在[ur ...

  6. django后台管理

    后台管理 1)  本地化 语言和时区的本地化. 修改settings.py文件. # LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-hans' # TIME_ ...

  7. 第一次用angularJS做后台管理点滴

    很早以前就大概看过一点angualrjs,但是没有项目,一直没有进行下去,就是干巴巴的看着,过了一段时间发现什么也不记得了. 来yulebaby我的第一个后台管理是用easyui做的,做完那个以后发现 ...

  8. Fu+ 后台管理 (Thinkphp)

    简要:小主从事PHP二年,期间一直做后台;为此向大家分享我制作一个后台(权限),希望能够跟各位PHP大神学习探索,如果有不对或者好的建议告知下:*~*! 1. 介绍 Fu+ 后台管理,是本人基于H+好 ...

  9. H+ 编辑tab页 保存后 刷新列表tab页 并关闭自已。tabA页调用tabB页的方法

    //注:在contabs.js文件中 $(function () { }); 方法外 加入 //注: data-name="' + menuName + '" 这句是加入的自定义属 ...

随机推荐

  1. nm

    nm是names的缩写,功能是列出目标文件的符号清单,常用来查看动态链接库中的函数. nm选项 -a   按照man手册,仅列出调试信息,实际上却是调试信息+正常信息 -A   增加一列显示目标文件, ...

  2. C++11特性中的stoi、stod

    本文摘录柳神笔记:   使⽤ stoi . stod 可以将字符串 string 转化为对应的 int 型. double 型变量,这在字符串处理的很 多问题中很有帮助-以下是示例代码和⾮法输⼊的处理 ...

  3. OpenThreads库学习

    在看STM32资料中看到STM32WB系列“双核无线微控制器配备双核无线微控制器(MCU)配备Bluetooth® 5.OpenThread和ZigBee®3.0连接技术,同时兼备超低功耗性能“不知道 ...

  4. htmlunit的使用

    原文转自:https://www.cnblogs.com/davidwang456/articles/8693050.html HtmlUnit使用场景 httpClient的局限性 对于使用java ...

  5. 在Linux CentOS 下安装JDK 1.8

    一首先去官网下载linux 版本JDK1.8  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21331 ...

  6. Fedora26安装Mysql实记(包含yum换源教程)

    课程实验中有一项是安装Hive,这个过程中需要安装Mysql. 在安装Mysql耗费了好多时间,总是报错数据仓库同步失败什么的. 输入yum install mysql 就提示错误,连接不上数据源.该 ...

  7. Python笔记⑤爬虫

    爬虫的前奏 # 爬虫前奏 # 明确目的 # 找到数据对应的网页 # 分析网页的结果找到数据所在的标签位置 # 模拟HTTP请求,向服务器发送这个请求,获取到服务器返回给我们的HTML # 用正则表达式 ...

  8. Python笔记3

    类格式示例: class Student(): name = '' age = 0 def print_file(self): print('name:' + self.name) print('ag ...

  9. Python 基础之面向对象之类中的方法和与类相关的魔术属性以及反射

    一.类中的方法 普通方法: 没有参数,只能类调用绑定方法: (1)绑定到对象(自动传递对象参数) (2)绑定到类(自动传递参数)静态方法: 无论是类还是对象,都能调用的方法#例:class Dog() ...

  10. Python磁力获取器命令行工具 torrent-cli

    作为一个搞代码的,找资源这种事肯定不能像普通人一样打开百度盲目查找,你需要写个爬虫工具来帮你完成这件事情啦! 兼容环境 Windows/Linux/MacOs 安装 pip 安装 $ pip inst ...