• 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
    
    

     

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

  • 相关阅读:
    NBU备份虚拟机高级选项virtual machine quiesce option
    find命令处理之exec与xargs区别
    python学习之列表
    vSphere 6.5密码正确不能登录解决方法
    Vmware vSphere P2V操作文档
    tomcat学习1架构理解
    telnet 退出命令
    敏捷软件开发
    数组、List和ArrayList的区别
    如何阅读一本书(感)
  • 原文地址:https://www.cnblogs.com/ujq3/p/8619228.html
Copyright © 2020-2023  润新知