Django项目:CRM(客户关系管理系统)--14--06PerfectCRM实现King_admin注册功能获取内存优化处理
<th >{% get_app_name admin_class.model %}{{ admin_class }} </th>
1 #kingadmin_tags.py 2 3 # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理———————— 4 5 # 因为前端禁止使用下划线开头(_meta.verbose_name ),所以通过后端处理后返回前端。 6 from django import template #模板 7 register = template.Library() #模板库 8 9 @register.simple_tag #Django中利用filter与simple_tag为前端自定义函数的实现方法 10 def get_app_name(model_obj): 11 return model_obj._meta.verbose_name_plural 12 13 14 15 # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理————————
1 #kingadmin_tags.py 2 3 # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理———————— 4 5 # 因为前端禁止使用下划线开头(_meta.verbose_name ),所以通过后端处理后返回前端。 6 from django import template #模板 7 register = template.Library() #模板库 8 9 @register.simple_tag #Django中利用filter与simple_tag为前端自定义函数的实现方法 10 def get_app_name(model_obj): 11 12 # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理———————— 13 # return model_obj._meta.verbose_name_plural 14 ''' 15 #判断 数据库 里如果有 verbose_name 或者 verbose_name_plural 就 调用 如果都没有 就使用默认的(英文) 16 class Meta: 17 verbose_name = "04客户信息表" #在 Django Admin 里 表名显示中文 但是会加s 18 verbose_name_plural = "04客户信息表" #在 Django Admin 里 表名显示中文 不会加s 19 ''' 20 model_name = model_obj._meta.verbose_name_plural if model_obj._meta.verbose_name else model_obj._meta.verbose_name_plural 21 if not model_name: 22 model_name = model_obj._meta.model_name 23 24 return model_name 25 # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理———————— 26 27 # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理————————
# ————————06PerfectCRM实现King_admin注册功能获取内存优化处理————————
#没有实例化会使用同一个内存地址
admin_obj = admin_class() #先实例化
admin_obj.model = model #参数赋值给实例
self.registered_sites[app_name][model_name] = admin_obj#注册APP
#实例化后,调用会使用不同的内存地址
site = AdminSite() #实例化类 单例模式
# ————————06PerfectCRM实现King_admin注册功能获取内存优化处理————————
1 #base_admin.py 2 # ————————04PerfectCRM实现King_admin注册功能———————— 3 4 #Django admin 注册功能的形式 5 # sites = { 6 # 'crm':{ 7 # 'customers':CustomerAdmin, 8 # 'customerfollowup':CustomerFollowUPAdmin, 9 # } 10 # } 11 12 class AdminRegisterException(Exception): #自定义异常 13 def __init__(self,msg): 14 self.message = msg 15 16 class BaseAdmin(object):#自定义方法 17 list_display = () 18 19 # ————————05PerfectCRM实现King_admin注册功能获取内存———————— 20 class AdminSite(object): 21 def __init__(self): 22 self.registered_sites = {} #传到views 里调用 23 def register(self,model,admin_class=None): #默认值None 使用 BaseAdmin 24 app_name = model._meta.app_label#用内置方法获取 APP名字 (crm) 25 model_name = model._meta.model_name#用内置方法获取 表名 (Customer) 26 if app_name not in self.registered_sites: 27 self.registered_sites[app_name] = {} #创建 crm={} 28 if model_name in self.registered_sites[app_name]: 29 raise AdminRegisterException("app [%s] model [%s] has already registered!异常" 30 %(app_name,model_name))#自定义异常, 31 if not admin_class: 32 admin_class = BaseAdmin #默认值None 使用 BaseAdmin 33 # self.registered_sites[app_name][model_name] = admin_class #注册APP 34 # site = AdminSite() # 实例化类 单例模式 35 36 37 # ————————05PerfectCRM实现King_admin注册功能获取内存———————— 38 #registered_sites {'crm': {'customer': <class 'crm.kingadmin.CustomerAdmin'>, 'courserecord': <class 'kingadmin.base_admin.BaseAdmin'>}} 39 #把类名放到class的对象里,然后通过class的对象传到前端 40 # admin_class.model = model 41 # self.registered_sites[app_name][model_name] = admin_class #注册APP 42 # 43 # site = AdminSite() #实例化类 单例模式 44 # ————————05PerfectCRM实现King_admin注册功能获取内存———————— 45 46 # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理———————— 47 #没有实例化会使用同一个内存地址 48 admin_obj = admin_class() #先实例化 49 admin_obj.model = model #参数赋值给实例 50 self.registered_sites[app_name][model_name] = admin_obj#注册APP 51 #实例化后,调用会使用不同的内存地址 52 53 site = AdminSite() #实例化类 单例模式 54 # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理———————— 55 56 # registered_sites={} 57 # def register(model,admin_class=None): #默认值None 使用 BaseAdmin 58 # app_name = model._meta.app_label#用内置方法获取 APP名字 (crm) 59 # model_name = model._meta.model_name#用内置方法获取 表名 (Customer) 60 # if app_name not in registered_sites: 61 # registered_sites[app_name] = {} #创建 crm={} 62 # if model_name in registered_sites[app_name]: 63 # raise AdminRegisterException("app [%s] model [%s] has already registered!异常" 64 # %(app_name,model_name))#自定义异常 65 # if not admin_class: 66 # admin_class = BaseAdmin #默认值None 使用class BaseAdmin 67 # registered_sites[app_name][model_name] = admin_class #注册APP 68 69 # ————————05PerfectCRM实现King_admin注册功能获取内存———————— 70 71 # ————————04PerfectCRM实现King_admin注册功能————————
如果感觉本章博客对您有帮助,请尽情打赏吧!
您的资助是我最大的动力!
金额随意,欢迎来赏!
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的
因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【颜言】!