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注册功能获取内存优化处理————————
#kingadmin_tags.py

 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注册功能获取内存优化处理————————
#kingadmin_tags.py

        # ————————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注册功能————————
#base_admin.py


 

如果感觉本章博客对您有帮助,请尽情打赏吧!

原文地址:https://www.cnblogs.com/ujq3/p/8619228.html