站点管理
- 内容发布的部分由网站的管理员负责,包括查看、添加、修改、删除数据
- 开发这些重复的功能是一件单调乏味、缺乏创造力的工作,为此,Django能够根据定义的模型类自动地生成管理模块
- 在Django项目中默认启用Admin管理站点
- 列表页选项
- 编辑页选项
- 重写模板
准备工作
启用
mysql
数据库+定义AreaInfo
模型类+创建管理员+注册模型类启用
mysql
数据库DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'Bookdb', 'HOST': 'localhost', 'PORT': '3306', 'USER': 'root', 'PASSWORD': 'mysql', } }
在
models.py
文件中,定义地区模型类AreaInfo
之前在
Bookdb
数据库中使用过表areainfo
,所以不需要再迁移# coding: utf-8 from django.db import models # 地区列表信息 class AreaInfo(models.Model): name = models.CharField(max_length=30) #名称 parent = models.ForeignKey('self',null=True,blank=True) #关系 # 元类信息 :修改表名 class Meta: db_table = 'areainfo'
创建管理员的用户名和密码
python manage.py createsuperuser
- 按提示填写用户名、邮箱、密码
在
admin.py
文件中,将地区模型类注册到后台站点# coding: utf-8 from django.contrib import admin from models import * # 注册地区模型类 admin.site.register(AreaInfo)
输入网址
http://127.0.0.1:8000/admin/
,登陆到后台站点浏览注册地区模型类后的站点界面
此时就可以进行查看、添加、修改、删除操作
点击进入
Areainfo
显示的是模型列表,不方便查看。需要重写模型的
__str__
显示指定信息
重写模型的
__str__
# 显示name def __str__(self): return self.name.encode('utf-8')
控制站点管理页的展示
- 类
ModelAdmin
可以控制模型在Admin界面中的展示方式,主要包括在列表页的展示方式、添加修改页的展示方式 注册模型类前定义管理类
AreaAdmin
# 定义模型类的站点管理类 class AreaAdmin(admin.ModelAdmin): pass
管理类有两种使用方式:以下两种二选一
- 注册参数
- 装饰器
注册的参数
# 注册地区模型类和模型类的站点管理类 admin.site.register(AreaInfo, AreaAdmin)
注册的装饰器
@admin.register(AreaInfo) class AreaAdmin(admin.ModelAdmin): pass
接下来就可以在类
AreaAdmin
中控制列表页、增加修改页展示效果