Django 管理站点

时间:2024-01-15 10:15:56

这一部分是关于 Django 的自动管理界面。这个特性是这样起作用的:它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即工作。在这里我们将讨论如何激活,使用和定制这个特性。

激活管理员界面

在你的数据models (不是视图部分的models)中加入admin metadata。不是所有的models都能够(或应该)被管理员编辑,你需要给models标记一个管理员接口(interface),通过给models添加一个内部类‘admin’完成接口标记。所以,给我们的“book”models添加管理员接口就像下面这样:

class Book(models.Model):
title = models.CharField(maxlength=)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
num_pages = models.IntegerField(blank=True, null=True) def __str__(self):
return self.title

class Admin:
    pass

然后重新执行一下上篇文章中的指令:

 python manage.py makemigrations books    #用来检测数据库变更和生成数据库迁移文件

  python manage.py migrate     #用来迁移数据库

  python manage.py sqlmigrate books 0001 # 用来把数据库迁移文件转换成数据库语言

创建新的数据表,上一步将生成管理界面使用的额外数据库表。

在你的 urls.py 中加入模板。如果你仍在用 startproject 生成的 urls.py文件,管理 URL 模板已经在里面了,你需要去掉注释。任何一个方式的 URL 模板应该像下面这样:

from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns(
path('admin/',admin.site.urls),    # django1* 的语句是(r'^admin/', include('django.contrib.admin.urls'))
)

就是这样。现在运行 python manage.py runserver 以启动开发服务器。你将看到像下面这样的东西:

System check identified no issues (0 silenced).
April 26, 2019 - 15:56:06
Django version 2.1.2, using settings 'website.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

现在你可以访问 Django 给你的URL (http://127.0.0.1:8000/admin/ 在进行的例子中),登录,随便看看。

Django 管理站点

提示:在前面没有创建超级用户,可以在manage.py的文件夹下执行指令,创建用户之后就可以直接登录,页面详见:https://blog.csdn.net/jueyings/article/details/70313925

登陆成功:

Django 管理站点

页面显示的“南邮吴亦凡”其实是我自己改变模板之后的结果:具体修改的方法可以参见:https://www.jianshu.com/p/a61da9ff9fd6

有一个提醒就是:base_site.html中的代码即使注释掉还是会被读取,所以要把原本拷贝下来的文件中的内容完全删除掉然后再去复制文章中给的代码,我就是因为没把原本文件中的代码删除掉,只是注释掉,结果疯狂报错,浪费了我好久的时间

总体思路:先是在创建的books下的数据模型中键入admin(类)的接口,并重新创建表,然后更改website的urls设置,这样可以建立与创建的website服务器之间的联系;另外,本教程还提供了更改管理界面的设置最后就可以简单创建一个管理book的web服务器