最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django admin組件使用方法詳解

 更新時間:2019年07月19日 10:25:36   作者:一路向北_聽風(fēng)  
這篇文章主要介紹了django admin組件使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

關(guān)于admin:

(1) admin的概述:

admin是一個django子代的組件,當(dāng)創(chuàng)建一個項目會后,就會在settings文件的 INSTALLED_APPS 中自動注冊,另外在urls.py 文件中同樣存在admin的路由

INSTALLED_APPS = [
 #自帶并且注冊的一個組件即app
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
urlpatterns = [
  # 自動存在的admin路由
  url(r'^admin/', admin.site.urls),
  url(r'^stark/', site.urls),

]

(2) admin 的執(zhí)行流程

當(dāng)django程序加載的時候,自動循環(huán)加載已經(jīng)注冊的APP中的admin.py文件然后執(zhí)行

#在admin.py文件中有一個__init__文件 ,其中有代碼如下
#意思是:程序的啟動自動尋找名為admin的py文件,然后執(zhí)行
def autodiscover():
  autodiscover_modules('admin', register_to=site)
#具體的方法如下:
def autodiscover_modules(*args, **kwargs):
  """
  Auto-discover INSTALLED_APPS modules and fail silently when
  not present. This forces an import on them to register any admin bits they
  may want.

  You may provide a register_to keyword parameter as a way to access a
  registry. This register_to object must have a _registry instance variable
  to access it.
  """

執(zhí)行admin.py文件中的內(nèi)容

# 在django啟動時候,系統(tǒng)自動加載
from django.contrib import admin
#導(dǎo)入該APP下的models
from DRF import models
#此處是一個單例模式 admion.site 
admin.site.register(models.Publisher)

單例模式site 這里應(yīng)用的是一個單例模式,對于AdminSite類的一個單例模式,執(zhí)行的每一個App中的每一個admin.site都是一個對象

# AdminSite 類
class AdminSite(object):
    ...  
    def __init__(self, name='admin'):
      self._registry = {} # model_class class -> admin_class instance
      self.name = name
      self._actions = {'delete_selected': actions.delete_selected}
      self._global_actions = self._actions.copy()
      all_sites.add(self)
    ....
site = AdminSite()

執(zhí)行register方法

# AdminSite中的register 方法
  def register(self, model_or_iterable, admin_class=None, **options):
    """
    Registers the given model(s) with the given admin class.
    The model(s) should be Model classes, not instances.
    If an admin class isn't given, it will use ModelAdmin (the default
    admin options). If keyword arguments are given -- e.g., list_display --
    they'll be applied as options to the admin class.
    If a model is already registered, this will raise AlreadyRegistered.
    If a model is abstract, this will raise ImproperlyConfigured.
    """

知識補充: 單例模式

a.py

class AdminSite(object):

  def __init__(self):
    self._registry = {}
obj1 = AdminSite()

b.py

import a
a.obj1._registry['k2'] = 666

c.py

import a
a.obj1._registry['k1'] = 123
print(a.obj1._registry)

單例模式的實現(xiàn)方法

1:使用模塊

Python的模塊就是天然的單例模式。

因為模塊在第一次導(dǎo)入時,會生成 .pyc 文件,當(dāng)?shù)诙螌?dǎo)入時,就會直接加載 .pyc 文件,而不會再次執(zhí)行模塊代碼。

因此,我們只需把相關(guān)的函數(shù)和數(shù)據(jù)定義在一個模塊中,就可以獲得一個單例對象了。

例如:

class V1(object):
  def foo(self)
    pass
V1 = V1()

將上面代碼保存在文件test.py,要使用時,直接在其他文件中導(dǎo)入此文件中的對象,這個對象既是單例模式的對象

如:from a import V1

2:使用裝飾器

def Singleton(cls):
  _instance = {}
  def _singleton(*args, **kargs):
    if cls not in _instance:
      _instance[cls] = cls(*args, **kargs)
    return _instance[cls]
  return _singleton
@Singleton
class A(object):
  a = 1
  def __init__(self, x=0):
    self.x = x
a1 = A(2)
a2 = A(3)

3:使用類

4:基于__new__方法實現(xiàn)

當(dāng)我們實例化一個對象時,是先執(zhí)行了類的__new__方法

當(dāng):(我們沒寫時,默認(rèn)調(diào)用object.__new__),實例化對象;然后再執(zhí)行類的__init__方法,對這個對象進(jìn)行初始化,所有我們可以基于這個,實現(xiàn)單例模式

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python操作excel的方法(xlsxwriter包的使用)

    python操作excel的方法(xlsxwriter包的使用)

    這篇文章主要為大家詳細(xì)介紹了python操作excel的方法,xlsxwriter包的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python kafka 多線程消費者&手動提交實例

    python kafka 多線程消費者&手動提交實例

    今天小編就為大家分享一篇python kafka 多線程消費者&手動提交實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 深入淺析python3 依賴倒置原則(示例代碼)

    深入淺析python3 依賴倒置原則(示例代碼)

    今天通過園區(qū)停車信息這樣一個場景分析python3 依賴倒置原則,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-07-07
  • Python 實現(xiàn)靜態(tài)鏈表案例詳解

    Python 實現(xiàn)靜態(tài)鏈表案例詳解

    這篇文章主要介紹了Python 實現(xiàn)靜態(tài)鏈表案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • OpenCV半小時掌握基本操作之色彩空間

    OpenCV半小時掌握基本操作之色彩空間

    這篇文章主要介紹了OpenCV基本操作之色彩空間,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Numpy實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)(CNN)的示例

    Numpy實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)(CNN)的示例

    這篇文章主要介紹了Numpy實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)(CNN)的示例,幫助大家更好的理解和使用Numpy,感興趣的朋友可以了解下
    2020-10-10
  • Python基于opencv的圖像壓縮算法實例分析

    Python基于opencv的圖像壓縮算法實例分析

    這篇文章主要介紹了Python基于opencv的圖像壓縮算法,結(jié)合實例形式分析了使用opencv進(jìn)行圖像壓縮的常用操作技巧與注意事項,需要的朋友可以參考下
    2018-05-05
  • 一文詳解Python定時任務(wù)觸發(fā)

    一文詳解Python定時任務(wù)觸發(fā)

    這篇文章主要為大家詳細(xì)介紹了Python定時任務(wù)觸發(fā)的相關(guān)知識,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下
    2023-04-04
  • Python 如何讀取字典的所有鍵-值對

    Python 如何讀取字典的所有鍵-值對

    這篇文章主要介紹了Python 讀取字典的所有鍵-值對操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python獲取網(wǎng)頁上圖片下載地址的方法

    Python獲取網(wǎng)頁上圖片下載地址的方法

    這篇文章主要介紹了Python獲取網(wǎng)頁上圖片下載地址的方法,涉及Python操作正則表達(dá)式匹配字符串的技巧,需要的朋友可以參考下
    2015-03-03

最新評論

叶城县| 南溪县| 怀来县| 虎林市| 措美县| 肇东市| 浑源县| 会理县| 客服| 田林县| 凤阳县| 安岳县| 嘉定区| 茌平县| 高州市| 花垣县| 苏州市| 政和县| 嘉禾县| 伊金霍洛旗| 吴堡县| 伊宁市| 玛曲县| 垦利县| 福清市| 红原县| 洪雅县| 灵宝市| 娄烦县| 宁乡县| 广丰县| 阿拉善右旗| 沁源县| 吉林省| 靖边县| 和政县| 夏河县| 武清区| 北宁市| 轮台县| 永顺县|