第九章admin后台系统
9.1了解admin
1.admin后台管理系统以英文显示,想要将后台内容以中文显示,添加中间件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
# 使用中文
'django.middleware.locale.LocaleMiddleware',
.......
2.创建超级管理员的账号与密码(qwert,123456)
python manage.py createsuperuser
#用户名邮箱可以为空格,用户名为空,默认为计算机的用户名
Username (leave blank to use 'administrator'): qwert
Email address:
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
This password is too common.
This password is entirely numeric.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
3.访问admin的路由地址,使用创建的用户名和密码登录
4.将app定义的模型展示在后台系统,需要在admin.py文件中编写:
from django.contrib import admin
from .models import *
# 方法一:
# 将模型直接注册到admin后台
# admin.site.register(PersonInfo)
# 方法二:
# 自定义PersonInfoAdmin类并继承ModelAdmin
# 注册方法一,使用装饰器将PersonInfoAdmin和Product绑定
@admin.register(PersonInfo)
class PersonInfoAdmin(admin.ModelAdmin):
# 设置显示的字段
list_display = ['id', 'name', 'age']
# 注册方法二
# admin.site.register(PersonInfo, PersonInfoAdmin)
@admin.register(Vocation)
class VocationAdmin(admin.ModelAdmin):
# 在数据新增或修改的页面设置可编辑的字段
# fields = ['job','title','payment','person']
# 在数据新增或修改的页面设置不可编辑的字段
# exclude = []
# 改变新增或修改页面的网页布局
fieldsets = (
('职业信息', {
'fields': ('job', 'title', 'payment')
}),
('人员信息', {
# 设置隐藏与显示
'classes': ('collapse',),
'fields': ('person',),
}),
)
# 将下拉框改为单选按钮
# admin.HORIZONTAL是水平排列
# admin.VERTICAL是垂直排列
radio_fields = {'person': admin.VERTICAL}
# 在数据新增或修改的页面设置可读的字段,不可编辑
# readonly_fields = ['job',]
# 设置排序方式,['id']为升序,降序为['-id']
ordering = ['id']
# 设置数据列表页的每列数据是否可排序显示
sortable_by = ['job', 'title']
# 在数据列表页设置显示的模型字段
list_display = ['id', 'job', 'title', 'payment', 'person']
# 为数据列表页的字段id和job设置路由地址,该路由地址可进入数据修改页
# list_display_links = ['id', 'job']
# 设置过滤器,如有外键,应使用双下画线连接两个模型的字段
list_filter = ['job', 'title', 'person__name']
# 在数据列表页设置每一页显示的数据量
list_per_page = 100
# 在数据列表页设置每一页显示最大上限的数据量
list_max_show_all = 200
# 为数据列表页的字段id和job设置编辑状态
list_editable = ['job', 'title']
# 设置可搜索的字段
search_fields = ['job', 'title']
# 在数据列表页设置日期选择器
date_hierarchy = 'recordTime'
# 在数据修改页添加“另存为”功能
save_as = True
# 设置“动作”栏的位置
actions_on_top = False
actions_on_bottom = True
9.3admin首页设置
1.修改项目应用的显示名称
将admin首页的项目app名称改为中文’网站首页’,在项目app目录下的__init__.py设置:
#app/__init__.py
from django.apps import AppConfig
import os
# 修改App在Admin后台显示的名称
# default_app_config的值来自apps.py的类名
default_app_config = 'index.IndexConfig'
# 获取当前App的命名
def get_current_app_name(_file):
return os.path.split(os.path.dirname(_file))[-1]
# 重写类IndexConfig
class IndexConfig(AppConfig):
name = get_current_app_name(__file__)
verbose_name = '网站首页'
2.修改模型的显示名称
只设置verbose_name = ‘人员信息’,在后台显示为:‘人员信息s’,要把‘s’删除,需要设置verbose_name_plural= ‘人员信息’
#app/models.py
from django.db import models
# Create your models here.
class PersonInfo(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=20)
age = models.IntegerField()
def __str__(self):
return self.name
class Meta:
verbose_name = '人员信息'
verbose_name_plural = '人员信息'
3.修改网页标题
在项目应用的admin.py设置admin的site_title和site_header属性,如果项目有多个app应用,只需在某个项目应用的admin.py中设置一次即可。
#app/admin.py
from django.contrib import admin
from .models import *
# 修改title和header
admin.site.site_title = 'MyDjango后台管理'
admin.site.site_header = 'MyDjango'
9.4 admin的二次开发
未完待续。。。
参考书籍《Django web应用开发实战》