使用django的后台管理
1.创建一个管理员用户
python manage.py createsuperuser, 按提示输入用户名,邮箱,密码
接着python manage.py runserver启动服务器,通过127.0.0.1:8000/admin访问,输入上面的用户名,邮箱,密码
进入管理站点,默认可以对groups、users进行管理
2.如果想将后台改为中文
可在setting.py 里将 LANGUAGE_CODE = 'en-us' 改为'zh-hans'
另外还可以设置时区 TIME_ZONE = ‘Asia/Shanghai’
3.想在后台看到数据库数据,需要向admin注册booktest的模型
打开booktest/admin.py 文件,注册模型
from django.contrib import admin
from models import BookInfo
admin.site.register(BookInfo)
刷新管理页面,可以对BookInfo的数据进行增删改查操作
问题:如果在str方法中返回中文,在修改和添加时会报ascii的错误
解决:在str()方法中,将字符创末尾添加“.encode(‘utf-8’)”
4.自定义管理页面
Django提供了admin.ModelAdmin类
通过定义ModelAdmin的子类,来定义模型在Admin界面的显式方式
class QuestionAdmin(admin.ModelAdmin):
...
admin.site.register(Question,QuestionAdmin)
list_display :显示字段,可以点击列头进行排序
list_display = ['pk','bittle','bpub_date']
list_filter:过滤字段,过滤框会出现在右侧
list_filter = ['bittle']
search_fields:搜索字段,搜索框会出现在上侧
search_fields = ['bittle']
list_per_page:分页,分页框会出现在下侧
list_per_page =10
例如:
在admin.py 里
from django.contrib import admin
from models import*
class BookInfoAdmin(admin.ModleAdmin):
list_display = ['id','btitle','bpub_date']
admin.site.register(BookInfo,BookInfoAdmin)
admin.site.register(HeroInfo)
这样后台数据就显示为
id btitle bpub_date
1 abc 2017/10/7 11:02
2 haha 2017/10/7 11:02
添加、修改页属性
fields:属性的先后顺序
fields = ['bpub_date','btitle']
fieldsets:属性分组
fieldsets = [
('basic',{'fields':['btitle']}),
('more',{'fields':['bpub_date']}),
]
5.关于关联对象的操作
对于HeroInfo模型类,有两种注册方式
方式一:与BookInfo模型类相同
方式二:关联注册
按照BookInfo的注册方式完成HeroInfo的注册
接下来实现关联注册
from django.contrib import admin
from models import BookInfo,HeroInfo
class HeroInline(admin.StackedInline):
model = HeroInfo
extra =2 (额外嵌入2个HeroInfo类)
class BookInfoAdmin(admin.ModelAdmin):
list_display = ['id','btitle','bpub_date']
inlines = [HeroInfoInline] (在BookInfo里嵌入两个HeroInfo)
admin.site.register(BookInfo,BookInfoAdmin)
admin.site.register(HeroInfo)
可以将内嵌的方式改为表格
class HeroInfoInline(admin.TabularInline)