Django中默认集成了后台数据管理页面,通过简单的配置就可以实现模型后台的Web控制台。————登录(127.0.0.1:8000:admin)——(示例,因个人设置而异)
管理界面通常是给系统管理员使用的,用来完成数据的输入,删除,查询等工作。
一般而言项目的settings.py文件中都集成该应用,如果没有集成,自己在settings中的INSTALLED_APPS添加 'django.contrib.admin'应用:
INSTALLED_APPS = [
'django.contrib.admin',
.....]
首先在Pycharm的终端窗口输入:python manager.py createsuperuser 创建一个系统管理员,根据提示逐步往下完成用户名、密码、邮箱等操作。
为便于在后台管理页面的操作,还可以在settings.py文件中把语言和时间进行更改
设置为中文 LANGUAGE_CODE = 'zh-hans'
设置时间,时区 TIME_ZONE='Asia/Shanghai'
在创建的App下找到admin.py文件,添加自己的数据模型 进行注册: admin.site.register(xxx) ——‘xxx’为在models.py中创建的类;
以上基本上就是Django站点的基本设置,除以上基本设置之外还有几点需要注意:在Django后台进行数据管理时,页面显示给我们的数据是某条数据的对象而不是易分辨的数据名称:
例如:对项目中定义的一个Person类进行数据操作时:以及修改后:
事实上,__str__是被print函数调用的,一般都是return一个什么东西。这个东西应该是以字符串的形式表现的。如果不是要用str()函数转换。当你打印一个类的时候,那么print首先调用的就是类里面的定义的__str__:
而如果不满足默认的站点样式还可以自己对Django站点进行个性化定制:
如果你感觉默认的站点样式不能满足应用需求,则开发者可以通过继承Django定义的管理员数据模型,模板,站点类来开发出个性化的管理员站点。
注册的时候添加自己的管理类 创建管理类
class StudentAdmin(admin.ModelAdmin):
# 规则
注册管理类
admin.site.register(Students,StudentAdmin)
例:在admin.py文件中的自定义:
#创建管理类
class PersonAdmin(admin.ModelAdmin):
#规则
list_display = ['p_name','p_sex']
#注册
admin.site.register(Person,PersonAdmin)
效果:
显示规则
list_display 显示字段
list_filter 过滤字段
search_fields 搜索字段
list_per_page 分页,每页显示多少条数据
ordering 排序规则 分组显示
fieldsets = ( ('班级',{fields:('sgrade')}),('姓名',{fields:('sname')}),)
例:
比如性别,在list_display的时候可以传递一个函数
def gender(self):
if self.sgender:
return '男'
else:
return '女'
list_display = ('sname', 'sage', gender)
# 设置显示的标题
gender.short_description = '性别'
例:
创建班级的Admin
class GradeAdmin(admin.ModelAdmin):
inlines = [StudentInfo]
创建学生信息
class StudentInfo(admin.TabularInline):
model = Student
extra = 2
admin.site.register(Grade,GradeAdmin)
还有一种覆盖系统模板的方式,在 django/contrib/admin/templates/admin中, 将需要重新定制的文件复制出来, 在自己的工程中创建相对应的子目录, 在settings中注入模板路径,子模板继承自复制的模板 添加自己的代码。