说明:本文翻译自Django官方文档Writing your first Django app, part 2。
本章我们继续编写web polls 应用,重点内容我们关注利用Django自动生成应用的后台管理系统。
创建管理员账户(Creating an admin user)
首先,创建一个可以登陆后台管理系统的超级管理员账户。进入mysite/目录并执行以下命令:
$ python manage.py creatsuperuser
输入自己想要的用户名并回车,以使用用户名admin为例:
Username:admin
输入电子邮箱地址:
Email address:zhoushuai@foxmail.com
最后输入你设定的密码并确认一次:
Password:**************
Password (again):**************
Superuser created successfully.
执行结果如图1所示:
开启开发服务器(Start the development server)
Django web应用的后台管理系统是默认激活的。我们首先开启开发服务器,利用上一章提到的命令:
$ python manage.py runserver
现在,打开浏览器进入本地域(local domain)的“/admin”,在本例中为:http://127.0.0.1:8000/admin/,你将可以看到后台管理系统的登陆界面,如图2所示:
注1:django 的翻译(translation)模式是默认开启的,因此登陆页面可能会显示你的系统所使用的语言。当然这取决于你的浏览器默认语言以及django是否存在你所使用的语言版本。
注2:如果不能顺利显示图2所示的登陆界面,可能是因为你所使用的Django版本的问题。本教程中使用Django 1.8。
登陆后台管理系统(Enter the admin site)
使用前文创建的超级管理员账户登入系统,可以看到如图3所示的界面:
在图3所示的界面中,我们可以看到一些可编辑的内容类型,比如:Groups和Users。这些都是由django的认证服务框架(authentication framework)django.contrib.auth所提供的。
使poll app在后台可修改(Make the poll app modifiable in the admin)
我们应该可以返现,在前文所创建的后台管理系统中并不能体现poll app中的相关内容。要解决这个问题,我们需要告知后台管理系统Question对象的管理接口(have an admin interface)。编辑polls/admin.py文件,如下:
from django.contrib import admin
from .models import Question
admin.site.register(Question)
如图4所示:
后台管理功能(Explore the free admin functionality)
现在,我们已经在后台管理系统中注册了Question,Django已经可以将Question的相关内容显示在后台管理页面上,如图5所示:
点击“Questions”,页面将显示数据库中存储的问题(question),并且你也可以在该页面上修改它,如图6所示,我们在上一章创建的问题“what's up?"显示在页面上:
点击"what's up?"并对其进行编辑,如图7所示:
注3:关于该页面操作的详细说明请参考英文原文。
定制管理表单(Customize the admin form)
通过admin.site.register(Question)的方法,Django在后台管理系统中自动添加了Question的相关内容。下面我们来关注如何对这些后台管理项进行定制。
首先,来看如何改变管理项的现实顺序。我们使用以下代码来代替admin.site.register(Question):
class QuestionAdmin (admin.ModelAdmin):
fields=['pub_date','question_text']
admin.site.register(Question,QuestionAdmin)
结果如图8所示: