The Django admin site Django站点管理
Django最强大的部分之一是自动管理界面。 它从模型中读取元数据,以提供一个快速的,以模型为中心的界面,信任的用户可以管理您网站上的内容。 管理员的建议使用仅限于组织的内部管理工具。 它不是为了建立你的整个前端。
管理员有许多钩子用于定制,但要注意试图专门使用这些钩子。 如果您需要提供一个更加以进程为中心的接口来抽取数据库表和字段的实现细节,则可能是编写自己的视图的时候了。
在本文中,我们将讨论如何激活,使用和定制Django的管理界面。
ModelAdmin objects
class ModelAdmin[source]
ModelAdmin
类是管理界面中模型的表示形式。 通常,这些存储在应用程序中名为admin.py
的文件中。 我们来看看一个非常简单的ModelAdmin
示例:
from django.contrib import admin
from myproject.myapp.models import Author
class AuthorAdmin(admin.ModelAdmin):
pass
admin.site.register(Author, AuthorAdmin)
你需要一个ModelAdmin对象吗?
在上述示例中,ModelAdmin类未定义任何自定义值(还)。 因此,将提供默认的管理界面。如果您对默认的管理界面感到满意,则无需定义一个ModelAdmin对象 - 您可以注册模型类而不提供ModelAdmin描述。前面的例子可以简化为:
from django.contrib import admin from myproject.myapp.models import Author admin.site.register(Author)
The register decorator注册装饰器
register(*models, site=django.admin.sites.site)[source]
还有一个注册您的ModelAdmin类
的装饰器:
from django.contrib import admin
from .models import Author
@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
pass
如果您不使用默认的AdminSite
,那么它将被赋予一个或多个模型类,以便在ModelAdmin
和可选的关键字参数站点注册:
from django.contrib import admin
from .models import Author, Reader, Editor
from myproject.admin_site import custom_admin_site
@admin.register(Author, Reader, Editor, site=custom_admin_site)
class PersonAdmin(admin.ModelAdmin):
pass
如果您必须在__init __()
方法中引用模型管理类,则不能使用此装饰器,例如。super(PersonAdmin,self).__ init __(* args,** kwargs)
。 如果你使用Python 3
,而不必担心支持Python 2
,你可以使用super().__ init __(* args,** kwargs)
。 否则,你必须使用admin.site.register()
而不是这个装饰器。