iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 29
0
Modern Web

來個Django Web介面測試吧系列 第 29

來個Django Web介面測試吧:Day29-Django Web開發:管理

Django管理網站

Django最強大的部分之一是自動管理界面。它從模型中讀取元數據,以提供一個快速的,以模型為中心的界面,受信任的用戶可以在其中管理您網站上的內容。管理員的建議用法僅限於組織的內部管理工具。它並非旨在構建您的整個前端。

管理員有許多用於自定義的掛鉤,但是要當心嘗試專門使用這些掛鉤。如果您需要提供一個更加以流程為中心的接口,以抽像出數據庫表和字段的實現細節,那麼可能是時候編寫自己的視圖了。

我們將討論如何使用和自定義Django的管理界面。


概況

在所使用的默認項目模板中啟用了admin startproject。

如果您沒有使用默認的項目模板,則要求如下:

  1. 添加'django.contrib.admin'和它的依賴- , , django.contrib.auth 和-你的 設置。django.contrib.contenttypesdjango.contrib.messagesdjango.contrib.sessionsINSTALLED_APPS
  2. 使用 和 在中的選項中配置DjangoTemplates 後端。TEMPLATESdjango.contrib.auth.context_processors.authdjango.contrib.messages.context_processors.messages'context_processors'OPTIONS
  3. 如果你自定義的MIDDLEWARE設置, django.contrib.auth.middleware.AuthenticationMiddleware並且 django.contrib.messages.middleware.MessageMiddleware必須包括在內。
  4. 將管理員的URL掛接到您的URLconf中。
    完成這些步驟後,您就可以通過訪問鏈接到(/admin/默認情況下,)的URL來使用管理站點。

如果需要創建用於登錄的用戶,請使用createsuperuser 命令。默認情況下,登錄到admin要求用戶將 is_superuser或is_staff屬性設置為 True。

最後,確定您的應用程序模型中的哪些模型應在管理界面中可編輯。對於每個模型,請按照中所述向管理員註冊ModelAdmin。


其他主題

  • 管理員動作
  • Django管理文檔生成器
  • 管理員中的JavaScript自定義

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)


上一篇
來個Django Web介面測試吧:Day28-Django 安全性開發介紹II
下一篇
來個Django Web介面測試吧:Day30-最終日,只是開始
系列文
來個Django Web介面測試吧30

尚未有邦友留言

立即登入留言