Django 学习(03 Django应用-admin后台管理系统)

因为这个是个投票系统、有客户页面就应该有供管理员使用的后台管理系统。

而Django框架提供了一个基于项目model创建的一个后台管理站点admin。这个界面只给站点管理员使用,并不对大众开放。 虽然不是很美观、但是却是现成的、且功能可定制。

1. 创建admin用户

$ python manage.py createsuperuser

根据系统提示输入用户名、邮箱、密码。

2. 进入admin后台管理系统

服务器启动后,在浏览器访问http://127.0.0.1:8000/admin/。理论上你就能看到admin的登陆界面了:

但我并不幸运、、、

首先浏览器并没有显示登陆页面、而是只展示了一行提示:

“A server error occurred. Please contact the administrator.”

看后后台有多个报错、分为两种:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: illegal multibyte sequence
for url_pattern in reversed(self.url_patterns):
TypeError: 'set' object is not reversible

哎、、、、、欲语泪先流

一个一个解决吧、第一个报错是编码的问题,貌似是django的bug。

上网查了查、这个报错影响到浏览器端无法显示报错信息。

那先把这个修了吧

根据提示找到 python安装路径\Lib\site-packages\django\views\debug.py ,打开后,修改约在 332 行处,将:

with Path(CURRENT_DIR, 'templates', 'technical_500.html').open() as fh:

修改为

with Path(CURRENT_DIR, 'templates', 'technical_500.html').open(encoding='utf-8') as fh:

重启后就好了。

这下报错可以在浏览器中展示了。

然后就看到了第二个错的详细信息、、、、

 

报错说urlpatterns不可逆转。看了下项目创建的urls.py
urlpatterns = {
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
}

这个urlpatterns是字典、字典无序、所以不可逆转。。。。。

这尼玛不是自动创建的吗、、、

按照度娘上的说法、在应用下的urls.py和app下的urls.py都应该改为urlpatterns= [ ] 即可。

终于看到登录页面了、、、

回归正题、开始登录、成功啦~~~~

然后把后台管理界面改个路由地址,隐藏一下、无敌

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('34thssk/', admin.site.urls),
]

现在进来的后台管理系统中只有两个部分可以进行操作,groups和users。

它们是django.contrib.auth模块提供的身份认证框架。

3. 后台管理系统中注册投票应用

先在admin中进行注册,告诉admin站点,请将polls的模型加入站点内,接受站点的管理。

打开polls/admin.py文件,加入下面的内容:

from django.contrib import admin
from .models import Question

admin.site.register(Question)

4. 后台管理系统功能

点击“Questions”,进入questions的修改列表页面。这个页面会显示所有的数据库内的questions对象,你可以在这里对它们进行修改。看到下面的“What’s up?”了么?它就是我们先前创建的一个question对象,并且通过__str__方法的帮助,显示了较为直观的信息。

image

下面,点击What’s up?进入编辑界面:

image

这里需要注意的是:

  • 页面中的表单是由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按钮,你会看到你对当前对象的所有修改操作都在这里有记录,包括修改时间和操作人员,如下图所示:

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章