Django 管理站点的完整基础知识

Django 带有一个非常强大的管理界面。这会从 models.py 中获取有关模型的信息,并恢复到一个快速简单的以模型为中心的界面。

在管理界面中,用户可以与模型表进行交互,并以非常简单有效的方式执行添加/删除元素等任务。

此外,Django 使我们有机会使用管理库中存在的管理类模型来编辑/更改默认管理界面。

Django 管理站点入门

现在,在访问 Django 管理界面之前,我们需要创建一个超级用户。现在让我们采取步骤为我们的管理站点创建超级用户。

创建超级用户

如果您尝试访问管理员/端点(主机网站/管理员),您将看到需要用户名和密码。这些是 Web 应用程序超级用户的用户名和密码。

管理员起始页

超级用户就像网站的最高管理员,具有以下用途:

  • 拥有删除、更改、向表添加新元素的全部权力。
  • 还可以创建新用户(以及超级用户)并为这些用户分配不同的用户权限。

要创建一个新的超级用户,我们在 shell 中编写以下代码

python manage.py createsuperuser

然后它会要求输入用户名、电子邮件和密码。输入详细信息,然后将创建超级用户。

超级用户

现在我们可以使用我们刚刚创建的用户名和密码登录管理站点 / admin) 。

登录后,管理站点如下所示。

管理界面1

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>。

管理员.py

当您修改文件时,服务器应该自动重新启动,但如果没有,您可以再次运行 runserver 命令:

manage.py runserver
管理站点模型 1

现在您将能够看到管理站点正在显示 BookModel 和 AuthorModel。

让我们开始从网络界面编辑模型。

通过管理站点编辑模型表元素

现在我们已经在网站中注册了表格,我们可以尝试添加新元素/删除/编辑它们。

1.添加新对象

在管理站点中,选择作者模型,然后在右上角您将看到一个添加新对象选项

单击该按钮可添加新的作者模型对象。

添加作者

同样,让我们​​在表中添加更多的作者。

作者 3

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 文章。继续编码!