为你的员工或客户生成一个用户添加,修改和删除内容的后台是一项缺乏创造性和乏味的工作。因此,Django 全自动地根据模型创建后台界面。

创建管理员账号

首先,我们得创建一个能登录管理页面的用户。请运行下面的命令:

py manage.py createsuperuser

输入你想要使用的用户名,然后按下回车键:

Username: admin

然后提示你输入想要使用的邮件地址:

Email address: admin@example.com

最后一步是输入密码。你会被要求输入两次密码,第二次的目的是为了确认第一次输入的确实是你想要的密码。

Password: **********
Password (again): *********
Superuser created successfully.

如遇报错,请参考下图

启动项目

py manage.py runserver

现在,打开浏览器,转到你本地域名的 /admin/ 目录, -- 比如 http://127.0.0.1:8000/admin/ 。你应该会看见管理员登录界面:

进入管理站点页面

现在,试着使用你在上一步中创建的超级管理员账号来登录。然后你将会看到 Django 管理页面:

你将会看到几种可编辑的内容:组和用户。它们是由 django.contrib.auth 提供的,这是 Django 开发的认证框架。

创建投票模块

只需要做一件事:我们得告诉管理页面,Question 对象需要被管理。打开 polls/admin.py 文件,把它编辑成下面这样:

from django.contrib import admin

from .models import Question

admin.site.register(Question)

体验便捷的管理功能

刚刚我们向管理页面注册了 Question 类。Django 知道它应该被显示在首页里:

刷新后台首页,你会看到:

点击 Questions 。现在看到是问题 Questions 对象的列表 change list 。这个界面会显示所有数据库里的问题 Question 对象,你可以选择一个来修改。这里现在有我们在上一部分中创建的 What's up? 问题。

点击 What's up? 来编辑这个问题(Question)对象:

注意事项:

  • 这个表单是从问题 Question 模型中自动生成的
  • 不同的字段类型(日期时间字段 DateTimeField 、字符字段 CharField)会生成对应的 HTML 输入控件。每个类型的字段都知道它们该如何在管理页面里显示自己。
  • 每个日期时间字段 DateTimeField 都有 JavaScript 写的快捷按钮。日期有转到今天(Today)的快捷按钮和一个弹出式日历界面。时间有设为现在(Now)的快捷按钮和一个列出常用时间的方便的弹出式列表。

页面的底部提供了几个选项:

  • 保存(Save) - 保存改变,然后返回对象列表。
  • 保存并继续编辑(Save and continue editing) - 保存改变,然后重新载入当前对象的修改界面。
  • 保存并新增(Save and add another) - 保存改变,然后添加一个新的空对象并载入修改界面。
  • 删除(Delete) - 显示一个确认删除页面。 如果显示的 “发布日期(Date Published)” 和你当前时间不一致,这意味着你可能没有正确的设置 TIME_ZONE 。改变设置,然后重新载入页面看看是否显示了正确的值。

blog/setting.py 里面修改如下代码即可:

TIME_ZONE = 'Asia/Shanghai'

USE_TZ = False

当你熟悉了数据库 API 之后,你就可以开始阅读下一部分,我们将会学习如何为投票模块添加更多视图。