一、admin后台的引入
当我们创建好项目时,我们会看到项目目录下的urls.py中有如下路由配置:
from django.urls import path
from django.contrib import admin
urlpatterns = [
path('admin/', admin.site.urls)
]
那么,它到底时何方神圣呢??不妨访问下试试看,可以看到如下界面
当然你的也有可能是英文界面,要想变成中文界面,只需在settings.py中设置以下两项即可!
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
这里需要用账号密码登录,哪里来的账号密码呢?这时我们就需要自己手动创建超级用户了,这个电子邮件地址可不填
创建好了就开始登录吧,可看到如下界面,students跟student detail又分别是什么呢??是不是有点熟悉的感觉,没错,就是我们之前定义好的model
二、介绍Django管理页面
- 为你的员工或客户生成一个用户添加、修改和删除内容的后台是一项缺乏创造性和乏味的工作,因此,Django全自动的根据模型创建后台界面
- Django产生于一个公众页面和内容发布者页面完全分离的新闻类站点的开发过程中,站点管理人员使用管理系统来添加新闻,事件和体育时讯等,这些添加的内容被显示在公众页面上,Django通过为站点管理人员创建统一的内容编辑界面解决了这个问题
- 管理界面不是为了网站的访问者,而是为了管理者准备的
三、向admin中注册模型
在app目录下有个admin.py的文件,在这个文件中注册模型
from django.contrib import admin
from .models import Student, StudentDetail
# Register your models here.
class StudentAdmin(admin.ModelAdmin):
list_display = ['id', 'name', 'age', 'sex', 'qq', 'phone']
search_fields = ['name', 'qq', 'phone']
list_filter = ['sex', 'c_time']
list_per_page = 5
# fields = ['name', 'sex', 'age', 'qq', 'phone', 'grade']
fieldsets = [
(None, {'fields': ['name']}),
('详细信息', {'fields': ['age', 'sex', 'qq', 'phone']}),
('设置', {'fields': ['is_delete']})
]
# 注册模型,StudentAdmin也要注册
admin.site.register(Student, StudentAdmin)
admin.site.register(StudentDetail)
四、自定义管理页面
Django提供了admin.ModelAdmin类,通过定义ModelAdmin的子类,来定义模型在admin界面的显示方式
属性 | 解释说明 |
---|---|
list_display | 列表页显示的字段 ,可点击列头进行排序 |
list_filter | 过滤字段,过滤框会出现在右侧 |
search_fields | 可通过设置的字段进行搜索,搜索框会出现在上侧 |
list_display_links | 可通过点击设置的字段来进入编辑界面 |
list_per_page | 每页所显示的数据量,用于分页,分页框会出现在下侧 |
fields | 编辑页面展示的字段,分先后顺序 |
fieldsets | 属性分组,fields与fields_set两者只能有其一 |
如上图所示,这是上面admin.py中代码设置的效果,再来看看编辑页面
当我们使用fields的时候
当使用fieldsets的时候,编辑页面是这样的