from django.db importmodels
#create your models here.
class
author(models.model):
nid = models.autofield(primary_key=true)
name = models.charfield(max_length=32)
age =models.integerfield()
#與authordetail建立一對一的關係
authordetail=models.onetoonefield(to="
authordetail
", on_delete=models.cascade)
def__str__
(self):
return
self.name
class
authordetail(models.model):
nid = models.autofield(primary_key=true)
birthday =models.datefield()
telephone =models.bigintegerfield()
addr = models.charfield(max_length=64)
class
publish(models.model):
nid = models.autofield(primary_key=true)
name = models.charfield(max_length=32)
city = models.charfield(max_length=32)
email =models.emailfield()
def__str__
(self):
return
self.name
class
book(models.model):
nid = models.autofield(primary_key=true)
title = models.charfield(max_length=32)
publishdate =models.datefield()
price = models.decimalfield(max_digits=5, decimal_places=2)
#與publish建立一對多的關係,外來鍵字段建立在多的一方
publish=models.foreignkey(to="
publish
",to_field="
nid", on_delete=models.cascade)
#與author表建立多對多的關係,manytomanyfield可以建在兩個模型中的任意乙個,自動建立第三張表
authors=models.manytomanyfield(to='
author',)
def__str__
(self):
return self.title
2、啟動:類似於admin
#經原始碼分析,admin就是這樣先導入這個
from django.utils.module_loading import
autodiscover_modules
class
name = '
stark
'def
ready(self):
autodiscover_modules(
"stark
")3、註冊以及url的設計
首先在stark的下邊建立乙個service包,建立乙個sites.py,
裡邊放全域性類以及預設配置類
"""預設配置類
"""list_display =
def__init__
(self, model):
self.model =model
deflistview(self, request):
print(self) # 當前訪問模型表的配置類物件
print(self.model) # 當前訪問模型表
"""stark元件的全域性類
"""def
__init__
(self):
self._registry ={}
def register(self, model, admin_class=none):
#設定配置類
ifnot
admin_class:
admin_class =modelstark
self._registry[model] =admin_class(model)
defget_urls(self):
temp =
for model, config_obj in
self._registry.items():
model_name =model._meta.model_name
#config_obj 獲取的就是每個for迴圈中的bookconfig(book),publish,author遍歷的物件
'''temp=[
url(r"^$", bookconfig(book).listview),
url(r"add/$", bookconfig(book).addview),
url(r"(\d+)/change/$", bookconfig(book).changeview),
url(r"(\d+)/delete/$", bookconfig(book).delview),
], none, none))
###########
url(r"^$", modelstark(publish).listview),
url(r"add/$", modelstark(publish).addview),
url(r"(\d+)/change/$", modelstark(publish).changeview),
url(r"(\d+)/delete/$", modelstark(publish).delview),
], none, none))
]'''return
temp
@property
defurls(self):
return
self.get_urls(), none, none
site = adminsite()
實現乙個自定義元件
如果要建立乙個自定義元件,你需要重寫uicomponent類的某些方法,最少需要重寫如下方法 建構函式,createchildren commitproperties measure layoutchrome updatedisplaylist 基礎語句結構如下 package mycomponen...
Vue自定義元件 簡單實現乙個自定義元件
在用vue構建專案的過程中,我們有時會用到別人開發的元件如vue router 使用他人元件的正常步驟如下 1 命令列進行安裝,執行install 2 在vue專案中的入口檔案main.js中,進行匯入 3 然後用vue.use plugin 引入該元件。我們也可以創造屬於自己的元件,具體步驟如下 ...
Vue自定義元件 簡單實現乙個自定義元件
在用vue構建專案的過程中,我們有時會用到別人開發的元件如vue router 使用他人元件的正常步驟如下 1 命令列進行安裝,執行install 2 在vue專案中的入口檔案main.js中,進行匯入 3 然後用vue.use plugin 引入該元件。我們也可以創造屬於自己的元件,具體步驟如下 ...