?系列文章目录
第一章?:Django安装与配置虚拟环境
第二章:django各模块的作用以及参数说明
第三章:? Django的路由与视图
第四章:django请求
第五章:django会话
第六章:django中的cookie与session
第七章:视图类
第八章:模型类
第九章:django与mysql连接与迁移
第十章:django模型类(二)
前言
在使用一个网站的时候,往往都会有一个页面是专门供管理员登录,管理员可以进行站点数据的增删改查,以及一些特殊的权限,有的人通常会自己写一个这样的后台管理站点,但是在django中已经给我们封装好了一个能过管理模型类的一些前端页面的增删改查,这个增删改查直接对接django中的模型类,通过模型类间接的去操控数据库中的数据,我们来看一下admin站点怎么使用?
1.admin介绍
1.1.admin是什么
网站后台页面,可以给不同的管理员设置不同的权限,更方便的管理模型类。
1.2.admin的功能
- 提供了一个管理的html页面
- 创建管理员用户
- 注册项目中的模型类
- 自定义管理页面
1.3.admin怎么创建
1.3.1.创建一个超级管理员用户
使用命令python manage.py createsuperuser
根据提示去输入相应的信息,超级管理员用户名一般输入admin,注意password不会显示在屏幕上,?如果出现Bypass password validation and create user anyway?就是说你输入的密码不符合规则(就是太简单了),是否跳过验证,在这里输入y
(day01) D:\JetBrains\PyCharm 2021.1.1\项目\DJango\day01>python manage.py createsuperuser
用户名 (leave blank to use '23019'): admin
电子邮件地址: 2301930436@qq.com
Password:
Password (again):
密码长度太短。密码必须包含至少 8 个字符。
这个密码太常见了。
密码只包含数字。
Bypass password validation and create user anyway? [y/N]: y
这就创建好了
1.3.2.admin登录
把项目跑起来,去访问admin的路由
会出现一个登陆界面,我们可以使用刚刚创建的超级管理员用户去登陆进去
?
?来到这个界面就代表超级管理员用户创建成功
2.配置admin站点
2.1.admin文件
在创建了管理员用户之后,我们只是可以进入到后台界面,但是后台界面我们的模型类呢,我们需要注册模型类才可以对模型类进行管理
我们在我们创建的子应用下面找到一个admin的文件,这个文件是用来配置admin站点的
?2.2.注册模型类
在使用下面的注册语句之前需要先对模型类进行导入
from .models import BookInfo, PeopleInfo
# 注册模型类
admin.site.register(BookInfo)
admin.site.register(PeopleInfo)
这时候登录管理员账号看效果
?
?可以直接通过admin站点对模型类中的数据进行查看,或者增删改查
2.3.自定义admin站点常用的参数
注意看注释
# 设置网站页头
admin.site.site_header = '网站页头'
# 设置网站标题
admin.site.site_title = '网站标题'
# 设置首页标题
admin.site.index_title = '首页标题'
效果
2.4.自定义管理类
通过继承一个admin.ModelAdmin的类控制模型类的展示方式
使用方式
from django.contrib import admin
from .models import BookInfo, PeopleInfo
# Register your models here.
# 自定义模型类
# 设置网站页头
admin.site.site_header = '网站页头'
# 设置网站标题
admin.site.site_title = '网站标题'
# 设置首页标题
admin.site.index_title = '首页标题'
# 继承admin.ModelAdmin
# 自定义管理类
class BookInfoAdmin(admin.ModelAdmin):
# 每页展示几条数据
list_per_page = 3
# 动作按钮的显示位置
actions_on_bottom = True
# 使用表格展示模型类的某些字段
list_display = ['name', 'chuban_date', 'read_count', 'sum_count']
# 点进图书之后显示的字段
# fields = ['name', 'chuban_date']
# 点进图书详情之后 分栏展示字段内容格式((栏目名,{fields:[字段1,字段2]}),(栏目名,{fields:[字段1,字段2]}))
# 以键值对格式定义栏目的属性,fields字段,classes展示形式(collapse折叠)
# 不可以与fields一起使用
fieldsets = (
('基本', {'fields': ['name', 'chuban_date']}),
('高级', {'fields': ['read_count'], 'classes': ['collapse']}),
)
# 选择过滤器(搜索框)
search_fields = ['name']
# 显示关联模型类的数据
class PeoleStackedInline(admin.TabularInline): # StackedInline 显示关联对象的数据一行一行显示 TabularInline 一列一列显示
model = PeopleInfo
inlines = [PeoleStackedInline]
class PeopleInfoAdmin(admin.ModelAdmin):
list_display = ['name', 'sex']
# 列表过滤器,支持外键过滤
list_filter = ['name', 'book']
# 注册模型类
admin.site.register(BookInfo, BookInfoAdmin)
# admin.site.register(BookInfo)
admin.site.register(PeopleInfo, PeopleInfoAdmin)
2.5.效果
?
?
?
?
|