您好,登錄后才能下訂單哦!
如何使用Django admin組件?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
admin
admin
是 Django
自帶的后臺管理組件,你可以在 admin 中執行增刪改查等操作。
它以可視化的方式讓你來操縱模型表,十分的便捷。
基本使用
數據準備
如下,在 app01
中有一個這樣的模型表:
from django.db import models # Create your models here. class User(models.Model): user_id = models.AutoField(primary_key=True, verbose_name="用戶編號") user_name = models.CharField(max_length=32, verbose_name="用戶名") user_gender = models.BooleanField( choices=([0, "male"], [1, "female"]), verbose_name="用戶性別") user_introduction = models.TextField( max_length=1024, null=True, blank=True, verbose_name="用戶簡介") def __str__(self): return self.user_name
創建用戶
當運行了數據庫遷徙命令后,需要創建一個可登錄 admin
進行管理的超級賬戶。
python manage.py createsuperuser
它會提示你輸入用戶名,以及密碼,密碼不能少于八位。
可以選填郵箱。
注冊admin
管理員用戶創建完成后,在 app01
應用下進行注冊。
from django.contrib import admin from .models import * admin.site.register(User)
接下來打開 admin
,輸入賬戶名與密碼后,就可以看到這張表。
接下來就可以對該表進行增刪改查了。
深度配置
models參數
在創建模型表時,可以對字段添加一些與 admin
相關的參數。
參數 | 描述 |
---|---|
verbose_name | Admin中顯示的字段名稱 |
blank | Admin中進行添加或編輯時,該字段是否可以為空 |
editable | Admin中是否可編輯該字段 |
help_text | Admin中的幫助信息 |
choices | Admin中選擇框顯示的內容 |
在這里的 blank
與 verbose_name
以及 choices
都比較常用。
除了在模型表的字段上進行配置外,也可以在該表下定制元信息。這其中有關于該表在 Admin
中的信息顯示,如下所示:
class User(models.Model): 字段 = 類型(條件) 字段 = 類型(條件) class Meta: verbose_name = "Admin中顯示的表名"
admin配置
如果要對一個注冊的表進行深度配置,可在 admin.py
中對它進行。
常用的配置方式有兩種,如下所示:
from django.contrib import admin # 裝飾器注冊 @admin.register(User) class UserConfig(admin.ModelAdmin): 配置項.... # 使用site class UserConfig(admin.ModelAdmin): 配置項.... admin.site.register(CustomAdmin, UserConfig) # 應用配置項
下面是 admin 深度配置的一些常用選項。
from django.contrib import admin from .models import * # Register your models here. class UserConfig(admin.ModelAdmin): # 自定義字段,作用顯示 def edit(self): return "編輯" # 以下是自定義admin的使用 # 添加數據模板頁 # add_form_template = None # 修改數據的模板頁 # change_form_template = None # 修改多條數據的模板頁 # change_list_template = None # 刪除確認信息模板頁 # delete_confirmation_template = None # 刪除關聯數據的確認頁 # delete_selected_confirmation_template = None # 修改歷史的模板頁 # object_history_template = None # 彈出框模板頁 # popup_response_template = None # 不支持多對多字段,展示表中的字段。 list_display = ["user_id", "user_name","user_gender",edit] # 點擊字段可進入change頁面 list_display_links = [edit] # 過濾篩選,支持各種關系 list_filter = ["user_gender"] # 支持在頁面修改的字段,與list_display_links有沖突 list_editable = ["user_name"] # 模糊搜索,可以按照編號、名字搜索.或關系 search_fields = ["user_id","user_name"] # 用于和action定制項做批處理 def patch_init(self,request,queryset): """ queryset:選中的字典 """ # 選中的用戶全改為男性... queryset.update(user_gender=False) # 添加描述 patch_init.short_description = "批量修改性別" actions = [patch_init] admin.site.register(User)
以下是配置完成后的樣式,自行對應配置項進行配置后查看即可。
中文顯示
如果想要在 admin
中進行中文顯示,則可以在全局的 settings.py
中配置語言。
# LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-Hans' # 中文顯示
執行流程
在啟動 django
項目時,第一步會去 settings
中導入各種模塊。
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', ]
查看 admin
源碼 from django.contrib import admin
,它下面有這樣的一個函數,該函數的作用就是將所有 app
下的 admin
都會做一次導入。
def autodiscover(): autodiscover_modules('admin', register_to=site)
我們知道,在模塊導入時,會運行該模塊中的代碼,那么在 admin.site
進行注冊時,實際上是應用單例模式進行注冊。
使用 admin.site.register()
實際上都是在使用單例對象下的方法,并不會重復生成多個對象。
class AdminSite(object): def __init__(self): self._registry = {} def register(self, model, admin_class = None): # 設置配置類 if not admin_class: admin_class = ModelAdmin self._registry[model] = admin_class(model, self) site = AdminSite() # 最后一行
admin
中單例對象的應用也非常簡單,它是以模塊的方式應用單例對象,因為我們知道模塊只會執行一次。
如下所示:
# f1.py 模塊 class Test(object): def __init__(self,name): self.name = name t1 = Test("測試")
當其他文件進行多次導入時,只會導入一次,此時使用的 t1 永遠都是單例對象,不會重復實例化:
import f1 f1.t1()
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。