本节课,我们首先学习 django admin 的初级知识,学完本节课,你会发现很轻松就能实现一个后台管理页面,更复杂的操作我们放在下一节学习。
Django自动管理工具是 django.contrib 的一部分。django.contrib 是一套庞大的功能集,它是 Django 基本代码的组成部分,Django 框架就是由众多包含附加组件(add-on)的基本代码构成的。 你可以把 django.contrib 看作是可选的 Python 标准库或普遍模式的实际实现。它们与 Django 捆绑在一起,这样你在开发中就不用“重复发明轮子”了。
管理工具是本书讲述 django.contrib 的第一个部分。从技术层面上讲,它被称作 django.contrib.admin。django.contrib 中其它可用的特性,如用户鉴别系统(django.contrib.auth)、支持匿名会话(django.contrib.sessioins)以及用户评注系统(django.contrib.comments)。在成为一个 Django 专家以前,你将会知道更多 django.contrib 的特性。 目前,你只需要知道 Django 自带很多优秀的附加组件,它们都存在于 django.contrib 包里。
Django 管理站点完全是可选择的,因为仅仅某些特殊类型的站点才需要这些功能。这意味着你需要在你的项目中花费几个步骤去激活它。
第一步,对你的 settings 文件做如下这些改变:
将 'django.contrib.admin'
加入 setting 的 INSTALLED_APPS
配置中 (INSTALLED_APPS
中的配置顺序是没有关系的,但是我们喜欢保持一定顺序以方便人来阅读)
保证 INSTALLED_APPS
中包含 'django.contrib.auth'
,'django.contrib.contenttypes'
,'django.contrib.sessions'
, 'django.contrib.messages'
和 'django.contrib.staticfiles'
,Django 的管理工具需要这 5 个包。
(如果你跟随本文制作 mysite 项目的话,那么请注意我们在第五章的时候把这五项 INSTALLED_APPS 条目注释了。现在,请把注释取消。)
确保 MIDDLEWARE
包含 'django.middleware.security.SecurityMiddleware'
,'django.contrib.sessions.middleware.SessionMiddleware'
,'django.middleware.common.CommonMiddleware'
,
,'django.contrib.auth.middleware.AuthenticationMiddleware'
和 'django.contrib.messages.middleware.MessageMiddleware'
。(再次提醒,如果有跟着做 mysite 的话,请把在第五章做的注释取消。)
第二步,运行 python manage.py migrate
。这一步将生成管理界面使用的额外数据库表。当你把
'django.contrib.auth'
加进 INSTALLED_APPS
后,第一次运行
migrate
命令时,系统会请你创建一个超级用户。如果你不这么作,你需要运行
python manage.py createsuperuser
来另外创建一个 admin 的用户帐号,否则你将不能登入
admin (提醒一句:只有当 INSTALLED_APPS
包含
'django.contrib.auth'
时,python manage.py createsuperuser
这个命令才可用。)
第三步,将 admin 访问配置在 URLconf(记住,在urls.py
中)。默认情况下,命令
django-admin.py startproject
生成的文件 urls.py
含有 Django admin 的路径,所以以下内容是必须确保存在的:
# Include these import statements... from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ]
当这一切都配置好后,现在你将发现 Django 管理工具可以运行了。启动开发服务器(如前:python manage.py runserver
),然后在浏览器中访问:http://127.0.0.1:8000/admin/
管理界面的设计是针对非技术人员的,所以它应该是自我解释的。尽管如此,这里简单介绍一下它的基本特性。
我们通过在浏览器中输入网址 http://127.0.0.1:8000/admin/
之后,就可以看到如下界面。
我们发现 Django 后台管理的登录页面是英文的,如果你想把他变成中文的,只需要在
settings.py
文件中把配置 LANGUAGE_CODE = 'en-us'>
改成
LANGUAGE_CODE = 'zh-hans'
,TIME_ZONE = 'UTC'
改成
TIME_ZONE = 'Asia/Shanghai'
即可,如下图。
你要使用你原来设置的超级用户的用户名和密码。如果无法登录,请运行python manage.py createsuperuser
,确保你已经创建了一个超级用户。
一旦登录了,你将看到管理页面。这个页面列出了管理工具中可编辑的所有数据类型。现在,由于我们还没有创建任何模块,所以这个列表只有寥寥数条类目: 它仅有两个默认的管理-编辑模块:用户组(Groups)和用户(Users)。
在 Django 管理页面中,每一种数据类型都有一个 选择框 和 编辑框 。前者显示数据库中所有的可用对象;后者可让你添加、更改和删除数据库中的某条记录。
点击 用户 行中的 修改 链接,引导用户更改列表。
这个页面显示了数据库中所有的用户。你可以将它看作是一个漂亮的网页版查询:SELECT * FROM auth_user;
如果你一直跟着作练习,并且只添加了一个用户,你会在这个页面中看到一个用户。但是如果你添加了多个用户,你会发现页面中还有过滤器、排序和查询框。
过滤器在右边;排序功能可通过点击列头查看;查询框在页面顶部,它允许你通过用户名查询。
点击其中一个用户名,你会看见关于这个用户的编辑窗口。
这个页面允许你修改用户的属性,如姓名和权限。(如果要更改用户密码,你必须点击密码字段下的 change password form,而不是直接更改字段值中的哈西码。)另外需要注意的是,不同类型的字段会用不同的窗口控件显示。例如,日期/时间型用日历控件,布尔型用复选框,字符型用简单文本框显示。
你可以通过点击编辑页面下方的删除按钮来删除一条记录。你会见到一个确认页面。有时候,它会显示有哪些关联的对象将会一并被删除。(例如,如果你要删除一个出版社,它下面所有的图书也将被删除。)
你可以通过点击管理主页面中某个对象的 Add 来添加一条新记录。一个空白记录的页面将被打开,等待你填充。
你还能看到管理界面也控制着你输入的有效性。你可以试试不填必需的栏目或者在时间栏里填错误的时间,你会发现当你要保存时会出现错误信息,如图下图所示。
当你编辑已有的对像时,你在窗口的右上角可以看到一个 历史按钮。通过管理界面做的每一个改变都留有记录,你可以按历史键来检查这个记录,如下图所示。