Django最大的优点之一,就是体贴的提供了一个基于项目model创建的一个后台管理站点admin。这个界面只给站点管理员使用,并不对大众开放。虽然admin的界面可能不是那么美观,功能不是那么强大,内容不一定符合你的要求,但是它是免费的、现成的,并且还是可定制的,有完善的帮助文档.
如果对admin的界面美观有切实需求,可以尝试使用simpleui库,不要用xadmin.
创建管理员用户
首先,我们需要通过下面的命令,创建一个可以登录admin站点的用户:
python manage.py createsuperuser
输入用户名:
Username: admin
输入邮箱地址
Email address: xxx@xxx.xxx
输入密码:
Password: **********
Password (again): *********
Superuser created successfully.
注意:Django1.10版本后,超级用户的密码要求具备一定的复杂性,如果密码强度不够,Django会提示你,但是可以强制通过。
启动开发服务器
执行runserver命令启动服务器后,在浏览器访问http://127.0.0.1:8000/admin/。你就能看到admin的登陆界面了:
小技巧:
在实际环境中,为了站点的安全性,我们一般不能将管理后台的url随便暴露给他人,不能用/admin/这么简单的路径。
可以将根url路由文件mysite/urls.py
中admin.site.urls
对应的表达式,换成你想要的,
比如
from django.contrib import admin from django.urls import path
urlpatterns = [
path('control/', admin.site.urls),
]
这样,我们必须访问http://127.0.0.1:8000/control/才能进入admin界面。
进入站点
利用刚才建立的admin账户,登陆admin,你将看到如下的界面:
当前只有两个可编辑的模型:Groups和Users。它们是django.contrib.auth模块提供的身份认证框架内的模型。
注册app
现在还无法看到投票应用,必须先在admin中进行注册,告诉admin站点,请将polls的模型加入站点内,接受站点的管理。
打开polls/admin.py文件,加入下面的内容:
from django.contrib import admin
from .models import Question
admin.site.register(Question)
站点体验
注册question模型后,等待服务器重启动,然后刷新admin页面就能看到Question栏目了。
这里需要注意的是:
- 页面中的表单是由Question模型自动生成的。
- 不同的模型字段类型(DateTimeField, CharField)会表现为不同的HTML input框类型。
- 每一个DateTimeField都会自动生成一个可点击链接。日期是Today,并有一个日历弹出框;时间是Now,并有一个通用的时间输入列表框。
在页面的底部,则是一些可选项按钮:
- delete:弹出一个删除确认页面
- save and add another:保存当前修改,并加载一个新的空白的当前类型对象的表单。
- save and continue editing:保存当前修改,并重新加载该对象的编辑页面。
- save:保存修改,返回当前对象类型的列表页面。
如果Date published字段的值和你在前面教程创建它的时候不一致,可能是你没有正确的配置TIME_ZONE,在国内,通常是8个小时的时间差别。修改TIME_ZONE配置并重新加载页面,就能显示正确的时间了。
在页面的右上角,点击History按钮,你会看到你对当前对象的所有修改操作都在这里有记录,包括修改时间和操作人员。