10.6單例模式
阿新 • • 發佈:2018-10-06
數據庫 spa isp tab spl escape 導入 出版 rip
2018-10-6 18:09:52
單例對象: 第一次導入模塊的時候已經在模塊裏面實例化好了
在Django中 admin.site site就是一個單例,被導入一次後面都直接用啦
只要在Django中導入一次模塊,無論在其他地方再導入還是用的一個對象,
不是把代碼非得寫在一個腳本裏面才是一個程序! Django本身就是一個程序,裏面的文件只要導入一次後面無論再導入都是一個對象
記住: 只要是同一個文件,只要導入過一次,就從對應的文件拿數據,
func.py
from mysingleton import my_singleton def bar(): print(id(my_singleton))import time
mysingleton.py
from mysingleton import my_singleton def bar(): print(id(my_singleton)) import time
main.py
# class Person(object): # # def __init__(self,name,age): # self.name=name # self.age=age # # # alex=Person("alex",33) # egon=Person("egon",32) # 單例模式# 單例模式方式1 :__new__ # class Singleton(object): # # _instance = None # def __new__(cls, *args, **kw): # if not cls._instance: # cls._instance = super(Singleton, cls).__new__(cls, *args, **kw) # return cls._instance # # class MyClass(Singleton): # a = 1 # # # #mc1=MyClass() # # mc2=MyClass() # # mc3=MyClass() # print(id(mc1)) # print(id(mc2)) # print(id(mc3)) # 單例模式方式2 :模塊方式 # from mysingleton import my_singleton,My_Singleton # my_singleton.foo() # # print(id(my_singleton)) # 思考1 # from mysingleton import my_singleton as my_singleton_new # # print(id(my_singleton_new)) # print(id(my_singleton)) # 思考2 # import func # # func.bar() # 思考3 from mysingleton import my_singleton,My_Singleton ms1=My_Singleton() from mysingleton import my_singleton,My_Singleton ms2=My_Singleton() print(id(ms1)) print(id(ms2))
筆記
day81 sql: 單表處理: Book id title price publish email addr 1 python 100 蘋果出版社 123@qq.com 北京 2 go 200 橘子出版社 234@qq.com 南京 3 java 211 橘子出版社 234@qq.com 南京 4 linux 22 橘子出版社 234@qq.com 南京 ###################一對多######################多表: Book id title price publish_id 1 python 100 1 2 go 200 2 3 java 211 2 4 linux 22 2 Publish id name email addr 1 蘋果出版社 123@qq.com 北京 2 橘子出版社 234@qq.com 南京 結論: 一旦確定表關系是一對多,那麽關聯字段建在多的表中 book: Foreignkey publish_id refference Publish(id) #######################多對多################################# Book id title price publish_id 1 python 100 1 2 go 200 2 3 java 211 2 4 linux 22 2 1 聚合與分組 # 統計不止一個作者的圖書名稱: select book.title,Count(author.name) as c from book inner join book-authors on ... inner join author on ... group by book.id having c>1 2 admin配置參數 後臺數據庫管理頁面 admin model: 對每一個app下的model設計出增傷改查4個url 查看book: http://127.0.0.1:8000/admin/app01/book/ 添加book: http://127.0.0.1:8000/admin/app01/book/add/ 編輯book: http://127.0.0.1:8000/admin/app01/book/1/change/ 刪除book: http://127.0.0.1:8000/admin/app01/book/1/delete/ 註冊: from django.contrib import admin # Register your models here. from .models import * from django.utils.safestring import mark_safe class BookConfig(admin.ModelAdmin): def deletes(self): return mark_safe("<a href=‘‘>刪除</a>") list_display = ["title","price","publishDate",‘publish‘,deletes] list_display_links = ["price"] list_filter=["price","title","authors","publish"] list_editable=["title",] search_fields=["title","price"] def patch_init(self,request,queryset): queryset.update(price=100) patch_init.short_description = "批量初始化" actions = [patch_init,] change_list_template="list.html" fields = (‘title‘,) admin.site.register(Book,BookConfig) admin.site.register(Publish) admin.site.register(Author) admin.site.register(AuthorDetail) Admin的實現流程: 1 啟動: import admin def autodiscover(): autodiscover_modules(‘admin‘, register_to=site) 執行每一個app下的admin.py文件 2 註冊 單例模式 3 設計URL Xadmin組件 3 ModelForm組件 CRM 1 Xadmin組件 2 權限 3 crm ‘‘‘ select Max(book.price) as max_price from author inner join book_authors on ... inner join join book on ... group by author.name ‘‘‘ Author id name age 1 alex 38 2 liwen 43 Author_Book id author_id book_id 1 1 1 2 1 2 3 2 2 結論;一旦是多對多的關系:需要建立第三張關系表 #######################一對一################################# Author id name age 1 alex 38 2 liwen 43 AuthorDetail id tel gf author_id(unique) 1 131 鋼蛋 1 2 121 鐵錘 2 SELECT "app01_book"."title" FROM "app01_publish" LEFT OUTER JOIN "app01_book" ON ("app01_publish"."nid" = "app01_book"."publish_id") WHERE "app01_publish"."name" = 蘋果出版社 SELECT "app01_book"."title" FROM "app01_book" INNER JOIN "app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid") WHERE "app01_publish"."name" = 蘋果出版社 SELECT "app01_book"."title", "app01_publish"."name" FROM "app01_book" INNER JOIN "app01_book_authors" ON ("app01_book"."nid" = "app01_book_authors"."book_id") INNER JOIN "app01_author" ON ("app01_book_authors"."author_id" = "app01_author"."nid") INNER JOIN "app01_authordetail" ON ("app01_author"."authorDetail_id" = "app01_authordetail"."nid") INNER JOIN "app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid") WHERE "app01_authordetail"."telephone" LIKE 151% ESCAPE ‘\‘
10.6單例模式