日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

s111 stark组件

發布時間:2024/9/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 s111 stark组件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內容回顧:
1. 類當做key
2. django中的model所在app名稱、以及小寫類名。

def index(request):# print(m1.UserInfo,m1.UserInfo._meta.app_label,m1.UserInfo._meta.model_name)# print(m2.Role,m2.Role._meta.app_label,m2.Role._meta.model_name)# 獲取當前models類所在app名稱、以及小寫類名。_registry = {m1.UserInfo:'1',m2.Role:'2',}for k,v in _registry.items():print(k._meta.app_label,k._meta.model_name)所在app名稱 模塊名(類名)return HttpResponse('...')

app01 userinfo
app02 role


今日內容:
1. stark介紹
???? 快速完成對N張表增刪改查+自定義復雜操作。
2. 單例模式

3. 路由系統

4. 啟動后、路由加載前定制一段代碼。

5. 參考django admin源碼編寫組件。


內容詳細:
1. stark介紹
???? 快速完成對N張表增刪改查+自定義復雜操作。

2. 單例模式
???? 這么寫:
???????? stark.py
???????????? class Adminstark(object):
???????????????? pass
???????????? site = Adminstark()???
???? 調用實例:
???????? import stark
???????? stark.site
???????? stark.site

單例模式/lewen.py class AdminSite(object):def __init__(self):self._registry = {}obj1 = AdminSite()2.單例模式/lemi.pyimport lewen lewen.obj1._registry['k2'] = 666 print(lewen.obj1)2.單例模式/kevin.py import lewenlewen.obj1._registry['k1'] = 123 import lemiprint(lewen.obj1) print(lewen.obj1._registry)雖然導入了兩次,但內存地址一樣 # <lewen.AdminSite object at 0x0000026419BB7A58> # <lewen.AdminSite object at 0x0000026419BB7A58> # {'k1': 123, 'k2': 666} 單例模式

任何去導入lewen模塊的就會執行, obj1 = AdminSite()

因為單列模式是所有調用的共用一個對象,如果每次調用,經構造方法綁定的值不做存儲,那么會后面調用模塊設置的值覆蓋掉。

可以在單列模式內部用一個靜態字段存儲每次的不同調用設置的值。

3. 路由系統
???? - include
???? - namespace

- 補充:項目/urls.pyfrom django.conf.urls import url,includefrom django.contrib import adminfrom app01 import viewsurlpatterns = [url(r'^admin/', admin.stark.urls),url(r'^rbac/', ([url(r'^login/', views.login),url(r'^logout/', views.logout),url(r'^x1/', ([url(r'^add/', views.add,name='n1'),url(r'^change/', views.change,name='n2'),],None,'xxx')),],None,'rbac')),]app01/views.pyfrom django.shortcuts import renderfrom django.shortcuts import HttpResponsefrom django.urls import reversedef login(request):url1 = reverse('rbac:xxx:n1')url2 = reverse('rbac:xxx:n2')print(url1)print(url2)return HttpResponse('login')def logout(request):return HttpResponse('logout')def add(request):return HttpResponse('add')def change(request):return HttpResponse('change') - 補充:

4. 啟動后、路由加載前定制一段代碼。

???? stark/service/stark.py 類似admin功能,提供表的注冊
???? a. 創建一個stark app 組件
???? b. 編寫ready方法
???????? stark/app.py
???????? from django.apps import AppConfig
???????? class StarkConfig(AppConfig):
???????????? name = 'stark'
???????????? def ready(self):
???????????? "Override this method in subclasses to run code when Django starts."
???????????????? from django.utils.module_loading import autodiscover_modules
???????????????? autodiscover_modules('stark')


????? 程序啟動時,會先去每個app中找stark.py文件并加載。
???? c. 其他app中創建stark.py????
???? d. 程序啟動時便會自動加載 stark.py

???

class StarkConfig(object):def __init__(self, model_class,site):self.model_class = model_classself.site = sitedef func(self):print(self.model_class)def run(self):self.func()class AdminSite(object):def __init__(self):self._registry = {}self.app_name = 'stark'self.namespace = 'stark'def register(self,model_class,stark_config=None):# model_class=models.Role# stark_config=Noneif not stark_config: # 判斷是否有自定義的配置,stark_config = StarkConfig # 沒有就用,默認的# model_class=models.Role# stark_config=RoleConfigself._registry[model_class] = stark_config(model_class,self)"""{models.UserInfo: StarkConfig(models.UserInfo), # 封裝:model_class=UserInfo,site=site對象models.Role: RoleConfig(models.Role) # 封裝:model_class=Role,site=site對象}"""for k,v in self._registry.items():v.run()# models.UserInfo,StarkConfig對象# models.Role,RoleConfig對象site = AdminSite() stark/service/stark.pyfrom django.apps import AppConfigclass StarkConfig(AppConfig):name = 'stark'def ready(self):"Override this method in subclasses to run code when Django starts."from django.utils.module_loading import autodiscover_modulesautodiscover_modules('stark') stark/apps.pyapp01/models.py from django.db import models class UserInfo(models.Model):title = models.CharField(max_length=32)app01/stark.py from stark.service.stark import site from app01 import models site.register(models.UserInfo) app01/stark.py

總結

以上是生活随笔為你收集整理的s111 stark组件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。