Django简易教程之二(admin)

说明:本文翻译自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所示:

图1

开启开发服务器(Start the development server)

Django web应用的后台管理系统是默认激活的。我们首先开启开发服务器,利用上一章提到的命令:

$ python manage.py runserver

现在,打开浏览器进入本地域(local domain)的“/admin”,在本例中为:http://127.0.0.1:8000/admin/,你将可以看到后台管理系统的登陆界面,如图2所示:

图2

注1:django 的翻译(translation)模式是默认开启的,因此登陆页面可能会显示你的系统所使用的语言。当然这取决于你的浏览器默认语言以及django是否存在你所使用的语言版本。

注2:如果不能顺利显示图2所示的登陆界面,可能是因为你所使用的Django版本的问题。本教程中使用Django 1.8。

登陆后台管理系统(Enter the admin site)

使用前文创建的超级管理员账户登入系统,可以看到如图3所示的界面:

图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所示:

图4

后台管理功能(Explore the free admin functionality)

现在,我们已经在后台管理系统中注册了Question,Django已经可以将Question的相关内容显示在后台管理页面上,如图5所示:

图5

点击“Questions”,页面将显示数据库中存储的问题(question),并且你也可以在该页面上修改它,如图6所示,我们在上一章创建的问题“what's up?"显示在页面上:

图6

点击"what's up?"并对其进行编辑,如图7所示:

图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所示:

图8

推荐阅读更多精彩内容