欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django admin組件的使用

 更新時間:2020年10月24日 09:45:20   作者:云崖先生  
這篇文章主要介紹了Django admin組件的使用,幫助大家更好的理解和學習Django框架,感興趣的朋友可以了解下

admin

adminDjango 自帶的后臺管理組件,你可以在 admin 中執(zhí)行增刪改查等操作。

它以可視化的方式讓你來操縱模型表,十分的便捷。

基本使用
數(shù)據(jù)準備

如下,在 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

創(chuàng)建用戶

當運行了數(shù)據(jù)庫遷徙命令后,需要創(chuàng)建一個可登錄 admin 進行管理的超級賬戶。

python manage.py createsuperuser

它會提示你輸入用戶名,以及密碼,密碼不能少于八位。

可以選填郵箱。

注冊admin

管理員用戶創(chuàng)建完成后,在 app01 應用下進行注冊。

from django.contrib import admin
from .models import *

admin.site.register(User)

接下來打開 admin ,輸入賬戶名與密碼后,就可以看到這張表。

接下來就可以對該表進行增刪改查了。

深度配置

models參數(shù)

在創(chuàng)建模型表時,可以對字段添加一些與 admin 相關的參數(shù)。

參數(shù) 描述
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的使用
  # 添加數(shù)據(jù)模板頁
  # add_form_template = None
  # 修改數(shù)據(jù)的模板頁
  # change_form_template = None
  # 修改多條數(shù)據(jù)的模板頁
  # change_list_template = None
  # 刪除確認信息模板頁
  # delete_confirmation_template = None
  # 刪除關聯(lián)數(shù)據(jù)的確認頁
  # 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' # 中文顯示

執(zhí)行流程

在啟動 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 ,它下面有這樣的一個函數(shù),該函數(shù)的作用就是將所有 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 中單例對象的應用也非常簡單,它是以模塊的方式應用單例對象,因為我們知道模塊只會執(zhí)行一次。

如下所示:

# f1.py 模塊
class Test(object):
	def __init__(self,name):
		self.name = name

t1 = Test("測試")

當其他文件進行多次導入時,只會導入一次,此時使用的 t1 永遠都是單例對象,不會重復實例化:

import f1

f1.t1()

以上就是Django admin組件的使用的詳細內容,更多關于Django admin組件的資料請關注腳本之家其它相關文章!

  • Python+Selenium隨機生成手機驗證碼并檢查頁面上是否彈出重復手機號碼提示框

    Python+Selenium隨機生成手機驗證碼并檢查頁面上是否彈出重復手機號碼提示框

    這篇文章主要介紹了Python+Selenium隨機生成手機驗證碼并檢查頁面上是否彈出重復手機號碼提示框,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Python聊天室程序(基礎版)

    Python聊天室程序(基礎版)

    這篇文章主要為大家詳細介紹了Python聊天室程序的基礎版,包含客戶端和服務器端兩部分,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python使用pickle模塊實現(xiàn)序列化功能示例

    Python使用pickle模塊實現(xiàn)序列化功能示例

    這篇文章主要介紹了Python使用pickle模塊實現(xiàn)序列化功能,結合實例形式分析了基于pickle模塊的序列化操作相關操作技巧,需要的朋友可以參考下
    2018-07-07
  • python 模擬創(chuàng)建seafile 目錄操作示例

    python 模擬創(chuàng)建seafile 目錄操作示例

    這篇文章主要介紹了python 模擬創(chuàng)建seafile 目錄操作,結合實例形式詳細分析了Python模擬創(chuàng)建seafile 目錄相關操作技巧,需要的朋友可以參考下
    2019-09-09
  • python搜索指定類型文件以及批量移動文件程序詳解

    python搜索指定類型文件以及批量移動文件程序詳解

    這篇文章主要給大家介紹了關于python搜索指定類型文件以及批量移動文件程序的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-03-03
  • Python中利用pyqt5制作指針鐘表顯示實時時間(指針時鐘)

    Python中利用pyqt5制作指針鐘表顯示實時時間(指針時鐘)

    這篇文章主要介紹了Python中利用pyqt5制作指針鐘表顯示實時時間(動態(tài)指針時鐘),本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • 淺談Python的文件類型

    淺談Python的文件類型

    下面小編就為大家?guī)硪黄獪\談Python的文件類型。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • 探索Python神奇算術用代碼輕松求和的幾種方法

    探索Python神奇算術用代碼輕松求和的幾種方法

    求和是數(shù)學中最基本的運算之一,也是編程中常見的任務之一,Python 提供了多種方法來計算和求和數(shù)字,本文將掏出計算求和的不同方法,包括使用循環(huán)、內置函數(shù)以及第三方庫
    2023-11-11
  • 解決pytorch下出現(xiàn)multi-target not supported at的一種可能原因

    解決pytorch下出現(xiàn)multi-target not supported at的一種可能原因

    這篇文章主要介紹了解決pytorch下出現(xiàn)multi-target not supported at的一種可能原因,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 最新評論