Django最強大的部分之一是自動管理界面。它從模型中讀取元數據,以提供一個快速的,以模型為中心的界面,受信任的用戶可以在其中管理您網站上的內容。管理員的建議用法僅限於組織的內部管理工具。它並非旨在構建您的整個前端。
管理員有許多用於自定義的掛鉤,但是要當心嘗試專門使用這些掛鉤。如果您需要提供一個更加以流程為中心的接口,以抽像出數據庫表和字段的實現細節,那麼可能是時候編寫自己的視圖了。
我們將討論如何使用和自定義Django的管理界面。
在所使用的默認項目模板中啟用了admin startproject。
如果您沒有使用默認的項目模板,則要求如下:
如果需要創建用於登錄的用戶,請使用createsuperuser 命令。默認情況下,登錄到admin要求用戶將 is_superuser或is_staff屬性設置為 True。
最後,確定您的應用程序模型中的哪些模型應在管理界面中可編輯。對於每個模型,請按照中所述向管理員註冊ModelAdmin。
ModelAdmin對象¶
類ModelAdmin[源代碼] ¶
該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)
該register裝飾¶
register(* models,site = django.admin.sites.site)[源代碼] ¶
還有一個裝飾器,用於註冊您的ModelAdmin課程:
from django.contrib import admin
from .models import Author
@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
pass
它提供了一個或多個模型類來註冊ModelAdmin。如果您使用的是自定義AdminSite,請使用site關鍵字參數傳遞它:
from django.contrib import admin
from .models import Author, Editor, Reader
from myproject.admin_site import custom_admin_site
@admin.register(Author, Reader, Editor, site=custom_admin_site)
class PersonAdmin(admin.ModelAdmin):
pass
如果必須在其__init__()方法中 引用模型admin類,則不能使用此裝飾器。您可以使用 。super(PersonAdmin, self).init(*args, **kwargs)super().init(*args, **kwargs)