Django进阶–admin-初识
1 简介
Django-admin
插件用于全自动地根据模型创建后台界面,为管理者而准备、使管理者轻松的管理普通用户数据。
简言之,该功能是系统自带的,开发者可定义的管理员界面。
django版本:2.1.7
python版本:3.5.2
2. 配置
admin
功能其实是django自带的一个系统,系统内功能全面。当需要使用admin
功能时,需要开发人员指定需要的部分功能。
2.1 系统配置
-
数据库迁移
本功能基于数据库,需要提前做好迁移工作;
-
配置文件
以下配置,项目创建时默认配置#project/project/urls.py urlpatterns = [ path('admin/', admin.site.urls), ] #project/project/settings.py INSTALLED_APPS = [ 'django.contrib.admin', #admin依于下方四个插件。 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', ] MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', ] LANGUAGE_CODE = 'zh-Hans' #界面使用汉字
2.2 创建管理员
需要创建管理者用户
#cd 项目根目录
(djfirst) zdq@python:~/DjProject/practise$ python manage.py createsuperuser
用户名 (leave blank to use 'zdq'): superteacher
电子邮件地址: 123456@163.com
Password:
Password (again):
密码长度太短。密码必须包含至少 8 个字符。
这个密码太常见了。
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
3 使用
3.1 展示内容
admin管理用户数据,主要是对数据库记录的操作,我们需要在每个APP下的admin.py
模块中申明需要显示的模型。
from django.contrib import admin
from .models import Student, StuDetail
class StudentAdmin(admin.ModelAdmin):
list_display = ['id', 'name', 'gender', 'college', 'studetail']
class StuDetailAdmin(admin.ModelAdmin):
list_display = ['qq', 'phone', ]
admin.site.register(Student, StudentAdmin)
admin.site.register(StuDetail, StuDetailAdmin)
3.2 登陆
输入127.0.0.1://8000/admin
获取登陆页面
登陆成功后,进入主界面
之后对于数据的修改和添加就可以同后端交互了.
4 列表显示
列表指的是模型类所有对象的列表
#形如:
ID 姓名 性别 学院 单个学生详情
23 阿飞 男 <火影村> 阿飞 的详情页
22 木叶丸 男 <火影村> 木叶丸 的详情页
9 黑衣人 男 <火影村> -
8 纳鲁淘 男 <火影村> -
7 白合 女 <侦探学院> -
下面展示如何控制这个列表的显示内容
4.1 数据展示
可以使用list_display
设置模型中需要展示的字段,
class StudentAdmin(admin.ModelAdmin)
list_display = ['id', 'name', 'gender', 'college', 'studetail']
4.2 允许链接
默认情况下只允许通过id
字段访问详情,可以通过list_display_links
给其他字段加上链接功能。
class StudentAdmin(admin.ModelAdmin)
list_display_links = ['id', 'name']
4.3 查询
可以使用search_fields
增加查询业务。
class StudentAdmin(admin.ModelAdmin)
search_fields = ['name', 'gender', 'college__name']
4.4 过滤
使用list_filter
过滤数据,达到筛选效果
class StudentAdmin(admin.ModelAdmin)
list_filter = ['c_time', 'gender']
4.5 分页
使用list_per_page
进行分页
class StudentAdmin(admin.ModelAdmin)
list_per_page = 5
5. 具体显示
指数据库一条记录,或模型类一个实例的显示方式
#形如
修改 单个学生
姓名: 阿飞
年龄: 25
性别: 男
学院: <火影村>
Is deleted
学生详情信息
单个学生详情: 阿飞 的详情页
QQ号码: 123123
联系电话: 111111
5.1 fields
fields:允许展示的属性及属性的先后顺序
class StudentAdmin(admin.ModelAdmin):
fields = ['name', 'gender', 'age', 'college']
5.2 fieldsets
fieldsets:属性分组
class StudentAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['name', 'gender']}),
('信息', {'fields': ['age', 'college']}),
('设置', {'fields': ['is_deleted']}),
]