Django之Xadmin
生活随笔
收集整理的這篇文章主要介紹了
Django之Xadmin
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
零、預備知識 單例對象
方式一:__new__方法
方式二:模塊導入,只要在引入的文件中實例了這個對象,不管引道哪里,這個對象都指向同一個內(nèi)存空間
1 class My_singleton(object): 2 def foo(self): 3 print("ok") 4 5 my_singleton = My_singleton() from xxx import my_singleton my_singleton.foo()?
一、Xadmin之注冊與生成url
在Xadmin.apps中:
1 from django.apps import AppConfig 2 from django.utils.module_loading import autodiscover_modules 3 4 class XadminConfig(AppConfig): 5 name = 'Xadmin' 6 7 def ready(self): #調(diào)用這個類時自動執(zhí)行 8 autodiscover_modules('Xadmin') #從admin.py文件中復制,讀取每個app中Xadmin.py文件?在Xadmin.py中:
1 from django.conf.urls import re_path 2 from django.shortcuts import HttpResponse 3 4 5 class ModelXadmin(object): 6 def __init__(self,model,site): 7 self.model = model 8 self.site = site 9 10 def list_view(self,request): #查詢界面 11 return HttpResponse("list_view") 12 def add_view(self,request): #增加界面 13 return HttpResponse("add_view") 14 def change_view(self,request,id): #修改界面 15 return HttpResponse("change_view") 16 def delete_view(self,request,id): #刪除界面 17 return HttpResponse("delete_view") 18 19 @property 20 def urls(self): 21 temp = [] 22 23 temp.append(re_path(r'^$',self.list_view)) 24 temp.append(re_path(r'^add/$',self.add_view)) 25 temp.append(re_path(r'^(\d+)/delete/$',self.delete_view)) 26 temp.append(re_path(r'^(\d+)/change/$',self.change_view)) 27 28 return temp,None,None 29 30 31 class XadminSite(object): 32 def __init__(self): 33 self._registry = {} 34 35 def register(self,model,Xadmin_class=None,**options): 36 if not Xadmin_class: 37 Xadmin_class = ModelXadmin 38 self._registry[model] = Xadmin_class(model,self) #{Book:ModelXadmin(Book)} 39 40 @property 41 def urls(self): 42 43 temp = [] 44 45 for model,Xadmin_class in self._registry.items(): 46 app_name = model._meta.app_label #取相應app的名字 47 model_name = model._meta.model_name #取相應model的名字 48 49 temp.append(re_path(r'^{0}/{1}/'.format(app_name,model_name),Xadmin_class.urls))# 50 51 return temp,None,None 52 53 54 site = XadminSite() #創(chuàng)建單例對象在app的Xadmin.py中:
1 from Xadmin.service import Xadmin 2 from app02 import models 3 4 Xadmin.site.register(models.Food) 5 Xadmin.site.register(models.Order)?
轉(zhuǎn)載于:https://www.cnblogs.com/yinwenjie/p/10373959.html
總結(jié)
以上是生活随笔為你收集整理的Django之Xadmin的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 叮咚买菜老板邮箱
- 下一篇: TypeScript--es5中的类,继