Django 带有一个非常强大的管理界面。这会从 models.py 中获取有关模型的信息,并恢复到一个快速简单的以模型为中心的界面。
在管理界面中,用户可以与模型表进行交互,并以非常简单有效的方式执行添加/删除元素等任务。
此外,Django 使我们有机会使用管理库中存在的管理类模型来编辑/更改默认管理界面。
Django 管理站点入门
现在,在访问 Django 管理界面之前,我们需要创建一个超级用户。现在让我们采取步骤为我们的管理站点创建超级用户。
创建超级用户
如果您尝试访问管理员/端点(主机网站/管理员),您将看到需要用户名和密码。这些是 Web 应用程序超级用户的用户名和密码。
超级用户就像网站的最高管理员,具有以下用途:
- 拥有删除、更改、向表添加新元素的全部权力。
- 还可以创建新用户(以及超级用户)并为这些用户分配不同的用户权限。
要创建一个新的超级用户,我们在 shell 中编写以下代码
python manage.py createsuperuser |
然后它会要求输入用户名、电子邮件和密码。输入详细信息,然后将创建超级用户。
现在我们可以使用我们刚刚创建的用户名和密码登录管理站点( / admin) 。
登录后,管理站点如下所示。
2.为管理站点注册模型
上图向我们展示了默认的管理界面。现在,我们将处理该界面本身并将模型注册到该站点。
为此,转到 admin.py 并编写:
from django.contrib import admin from .models import BookModel, AuthorModel admin.site.register(BookModel) admin.site.register(AuthorModel) |
admin.site.register(<model_name>,<admin_model>) – 这是一个将括号中的模型注册到管理站点的函数,因此名称为 admin.site.register 。
现在,我们将 BookModel 和 AuthorModel 本身作为参数。
我们稍后将了解第二个参数 <admin_model>。
当您修改文件时,服务器应该自动重新启动,但如果没有,您可以再次运行 runserver 命令:
manage.py runserver |
现在您将能够看到管理站点正在显示 BookModel 和 AuthorModel。
让我们开始从网络界面编辑模型。
通过管理站点编辑模型表元素
现在我们已经在网站中注册了表格,我们可以尝试添加新元素/删除/编辑它们。
1.添加新对象
在管理站点中,选择作者模型,然后在右上角,您将看到一个添加新对象选项。
单击该按钮可添加新的作者模型对象。
同样,让我们在表中添加更多的作者。
2.编辑/修改现有对象
如果您想更改之前保存的任何元素,可以单击它,下面的页面将再次出现。
您现在可以编辑它们,完成后单击“保存”以保存新值。
在这里您可以看到保存并继续编辑或保存选项,可用于保存编辑后的对象。
3. 删除对象
单击要删除的元素,然后您将看到以下页面。
字段下方会出现一个红色的删除选项,只需单击该删除按钮,该特定对象就会被删除。
看看在管理站点中的表中添加或更改元素是多么简单(与 python shell 中的漫长过程相比!)
与 Django 管理界面链接的外键
在上一篇文章中,我们了解了如何使用外键链接两个 Django 模型。现在,如果您进入管理部分>> AuthorModel,您可以看到我添加了三位作者。
现在,在BookModel 表中,当您尝试添加新书时,在author_id字段中,您将开始获得author_id 的下拉列表。
这是因为我们做了外键链接,因此我们现在可以轻松地从AuthorModel列表中选择作者。
我们无需为所有书籍一次又一次地添加作者姓名,只需链接两个模型(BookModel 和 AuthorModel),然后从下拉列表中进行选择即可。
现在添加让我们为每个作者添加几本书。
在这里,我为《捉鬼敢死队》和《哈利·波特》选择了作者 1,为编程教程选择了作者 2
现在,我们将看到外键的另一个功能。假设作者 一决定删除他的帐户,因此从AuthorModel 中删除了他的帐户作者一。
从AuthorModel中删除作者 1
现在,如果我们转到 BookModel,您将看到作者一写的所有书籍都已被自动删除。
这就是我们使用 FK 所获得的优势。
更改界面视图
现在我们知道默认界面是如何工作的,让我们尝试使用管理模型更改此界面的一些方面。
语法:
#Decorator @admin .register(BookModel) class BookModelAdmin(admin.ModelAdmin): #Fields fields = ( '<model_field_names>' ) #List Display list_display = ( '<model_field_names>' ) #List_filter list_filter = ( '<model_field_names>' ) #ordering ordering = ( '<model_field_names>' ) #fieldsets fieldsets = ( ( 'Required information' ,{ 'description' : '<' description_sentence>', 'fields' :( '<model_fields' >) }), ( 'Optional Information' ,{ 'classes' : ( 'collapse' ,), 'fields' : ( '<model_fields>' ) }) ) |
下面让我们一一讨论每个元素。
1. 装饰器
第一行admin.register(BookModel)称为寄存器,并在应用它的类之前与@ 符号一起使用。
它的功能类似于admin.site.register。这只是将模型与 adminModel 一起注册的不同方式。但如果您不想使用它,那么您必须使用前面提到的方法添加管理模型。
admin.site.register(BookModel,BookModelAdmin) |
2. 领域
此选项允许您安排模型字段在管理界面中显示的顺序和位置。
注意:此选项将(字段的)输入作为元组。
fields = (( 'title' , 'price' ), 'genre' , 'author_id' ) |
在这里您可以看到我希望字段出现的顺序。
如果您希望多个字段显示在同一水平级别上,那么我们将它们作为一个元组添加在一起。(如代码所示)
3. 列表显示
现在,如果您看到图像,只有一个标题“ Book Model”。现在,如果您想显示不同的标题,那么我们使用名为 list_display 的选项。
因此,此选项允许您选择要在上面显示的页面上显示的所有字段。
注意:此选项将输入作为tuples。
list_display = ( 'title' , 'price' ) |
4. 列表过滤器
正如你所看到的,在默认界面中,没有filter-by选项。使用list_filter在上面显示的页面上创建一个过滤选项。这有助于我们快速搜索表中的特定元素。
注意:此选项将输入作为元组。
list_filter = ( 'genre' ,) |
5. 订购
就像我们在Django Models中看到的MetaClass一样,这里的ordering具有相同的功能。我们可以指定特定字段的元素的显示顺序。
其语法与 MetaClass 模型中的排序类似。
注意:此选项将输入作为元组。
ordering = ( 'title' ,) |
6. 字段集
这是提及我们上面看到的字段的另一种方式。
正如您在许多网站上看到的那样,单击“显示更多”按钮后可以看到一些可选信息。字段集使我们能够将某些字段保留为可选字段,而将某些字段保留为必需字段。
这个语法有点令人困惑,尝试理解下面给出的代码:
fieldsets = ( ( 'Required information' ,{ 'description' : '<' description_sentence>', 'fields' :( '<model_fields' >) }), ( 'Optional Information' ,{ 'classes' : ( 'collapse' ,), 'fields' : ( '<model_fields>' ) }) ) |
管理库中还有许多其他类似的管理选项,可以使用,例如:
- 空值显示
- 排除
- 列表可编辑
- 只读字段
现在让我们更改 BookModel 和 AuthorModel 的管理界面。
在管理站点中更改 BookModel 视图
让我们使用各种管理选项来更改BookModel的外观
@admin .register(BookModel) class BookModelAdmin(admin.ModelAdmin): fields = (( 'title' , 'price' ), 'genre' , 'author_id' ) list_display = ( 'title' , 'price' ) list_filter = ( 'genre' ,) ordering = ( 'title' ,) |
注意:对于单值元组,我们需要在末尾添加逗号“,”以指示Python它是一个元组。
这里:
- 我们将标题和价格保持在同一水平上
- 标题和价格的列表显示
- 按类型过滤
- 根据标题按字母顺序排列元素
现在让我们运行服务器并检查。
在管理站点中更改 AuthorModel 视图
同样,让我们也使用上面学到的管理选项来更改 AuthorModel 的外观。
@admin .register(AuthorModel) class AuthorModelAdmin(admin.ModelAdmin): fieldsets = ( ( 'Required information' ,{ 'description' : 'These fields are compulsory' , 'fields' :( 'first_name' ,) }), ( 'Optional Information' ,{ 'classes' : ( 'collapse' ,), 'fields' : ( 'last_name' ,) }) ) list_display = ( 'first_name' , 'last_name' ) ordering = ( 'first_name' ,) |
这里
- 名字用于必填信息
- 姓氏用于可选信息下
- 名字和姓氏的列表显示
- 根据名字按字母顺序排列元素
现在让我们运行服务器并检查。
Django 管理站点中的其他选项
在 Django 管理站点的主页上,已经存在一些其他选项,例如用户、组。
用户选项用于处理超级用户以及处理每个用户的权限。
屏幕上显示的所有元素都是可单击的,并且可以通过单击它们来编辑用户权限,并修改权限集。
结论
就是这样,伙计们。我们已经到了本文的结尾。在下一节中,我们将学习模板。请继续关注未来几天的更多 Django 和 Flask 文章。继续编码!