1 #base_admin.py
 2 #Django admin 注册功能的形式
 3 # sites = { 4 #     'crm':{ 5 #         'customers':CustomerAdmin,
 6 #         'customerfollowup':CustomerFollowUPAdmin,
 7 #     }
 8 # }
 9
10 class AdminRegisterException(Exception):  #自定义异常
11     def __init__(self,msg):
12         self.message = msg
13
14 class BaseAdmin(object):#自定义方法
15     list_display = ()
16
17 class AdminSite(object):
18     def __init__(self):
19         self.registered_sites = {}   #传到views 里调用
20     def register(self,model,admin_class=None): #默认值None 使用 BaseAdmin
21         app_name = model._meta.app_label#用内置方法获取 APP名字 (crm)
22         model_name = model._meta.model_name#用内置方法获取 表名  (Customer)
23         if app_name not in self.registered_sites:
24             self.registered_sites[app_name] = {} #创建  crm={}
25         if model_name in self.registered_sites[app_name]:
26             raise AdminRegisterException("app [%s] model [%s] has already registered!异常"
27                                                  %(app_name,model_name))#自定义异常,
28         if not  admin_class:
29             admin_class = BaseAdmin  #默认值None 使用 BaseAdmin
30
31         self.registered_sites[app_name][model_name] = admin_class #注册APP
32
33 site = AdminSite() #实例化类  单例模式
34
35
36 # registered_sites={}
37 # def register(model,admin_class=None): #默认值None 使用 BaseAdmin
38 #     app_name = model._meta.app_label#用内置方法获取 APP名字 (crm)
39 #     model_name = model._meta.model_name#用内置方法获取 表名  (Customer)
40 #     if app_name not in registered_sites:
41 #         registered_sites[app_name] = {} #创建  crm={}
42 #     if model_name in registered_sites[app_name]:
43 #         raise AdminRegisterException("app [%s] model [%s] has already registered!异常"
44 #                                              %(app_name,model_name))#自定义异常
45 #     if not admin_class:
46 #         admin_class = BaseAdmin  #默认值None 使用class BaseAdmin
47 #     registered_sites[app_name][model_name] = admin_class #注册APP

#base_admin.py

site.register(models.Customer,CustomerAdmin)site.register(models.CourseRecord)

 1 #kingadmin.py
 2
 3 from crm import models
 4 #print("kingadmin crm",models.Customer)
 5
 6 # from king_admin.base_admin import register,BaseAdmin
 7 from king_admin.base_admin import site,BaseAdmin
 8
 9 #05客户信息表
10 class CustomerAdmin(BaseAdmin):
11     #显示的字段(不能包含ManyToManyField)
12     list_display= ('id','name','qq','consultant','source','consult_content','status','date')
13
14
15
16 # register(models.Customer,CustomerAdmin)
17 # register(models.CourseRecord)
18
19 site.register(models.Customer,CustomerAdmin)
20 site.register(models.CourseRecord)

#kingadmin.py

print("registered_sites",base_admin.site.registered_sites)return render(request, 'king_admin/app_index.html', {"site": base_admin.site})

 1 #views.py
 2 from django.shortcuts import render
 3
 4 # from django import conf #配置文件
 5 # print("dj conf:",conf) #配置文件
 6 # print("dj conf:",conf.settings)#配置文件.设置
 7
 8 from king_admin import app_config #自动调用  动态加载类和函数
 9
10 # from king_admin.base_admin import registered_sites # registered_sites={}
11 from king_admin import base_admin
12
13 def app_index(request):
14     # for app in conf.settings.INSTALLED_APPS:
15     #     print(app)#循环打印 配置文件.设置.安装应用程序#.Perfectcustomer\settings里的INSTALLED_APPS列表
16
17     # print("registered_sites",registered_sites)
18     # return render(request, 'king_admin/app_index.html')
19
20     # print("registered_sites", base_admin.registered_sites)
21     # return render(request, 'king_admin/app_index.html')
22
23     print("registered_sites",base_admin.site.registered_sites)
24     return render(request, 'king_admin/app_index.html', {"site": base_admin.site})

#views.py

 1 {#app_index.html#}
 2
 3 {% extends 'king_master/king_index.html' %}
 4
 5 {% block right-container-content %}
 6
 7     {#从base_admin传到views,views返回的值items()方法把字典转换成列表#}
 8     {% for app,app_tables in site.registered_sites.items %}
 9
10         <table class="table table-hover">
11               <thead>
12                 <tr>
13                     <h3>{{ app }}</h3>{#循环APP名字#}
14                 </tr>
15               </thead>
16
17               <tbody>
18                      {#上层循环的变量值,items()方法把字典转换成列表#}
19                     {% for model_name,admin_class in app_tables.items %}
20                         <tr>
21                               <th >{{ model_name }}{{ admin_class }} </th>
22                         </tr>
23                     {% endfor %}
24               </tbody>
25         </table>
26     {% endfor %}
27
28 {% endblock %}

{#app_index.html#}

转载于:https://www.cnblogs.com/ujq3/p/8617309.html

Django项目:CRM(客户关系管理系统)--12--05PerfectCRM实现King_admin注册功能获取内存01...相关推荐

  1. Java项目:CRM客户关系管理系统(java+Springboot+maven+mysql)

    源码获取:博客首页 "资源" 里下载! Springboot项目CRM客户关系管理系统: 系统实现了CRM客户关系系统的基本功能,主要有看板(当月参与的业务机会.当月转化情况.将要 ...

  2. 开源项目-CRM客户关系管理系统

    哈喽,大家好,今天给大家带来一个开源系统-CRM客户关系管理系统 主要功能包括客户管理,客户流失,销售机会,客户关怀等模块 系统开发环境以及版本 操作系统: Windows_7 集成开发工具: Ecl ...

  3. Django项目:CRM(客户关系管理系统)--69--59PerfectCRM实现king_admin行内编辑

    1 #base_admin.py 2 3 4 # --------24PerfectCRM实现King_admin自定义操作数据-------- 5 from django.shortcuts imp ...

  4. CRM客户关系管理系统让企业在竞争中脱颖而出

    在疫情的催化下,CRM客户关系管理系统被推到了企业风口.面临巨大的生存压力导致企业转型和数字化迫在眉睫.CRM客户关系管理系统作为一种专业的客户关系管理工具,再次受到青睐. CRM客户关系管理系统具有 ...

  5. Django CRM客户关系管理系统

    CRM需求分析 随着信息化时代带来的科技创新,CRM客户关系管理系统带来的效益在已经成为很多企业提高竞争优势的一分部,CRM客户关系管理系统将企业管理和客户关系管理集成到统一的平台,其系统功能主要体现 ...

  6. Java Web项目源代码|CRM客户关系管理系统项目实战(Struts2+Spring+Hibernate)解析+源代码+教程

    客户关系管理 (CRM) CRM一般指客户关系管理 客户关系管理是指企业为提高核心竞争力,利用相应的信息技术以及互联网技术协调企业与顾客间在销售.营销和服务上的交互,从而提升其管理方式,向客户提供创新 ...

  7. JavaWeb实训项目:基于SSM框架的CRM客户关系管理系统(文章最后有源码)

    JavaWeb实训项目:基于SSM框架的CRM客户关系管理系统(附部分源码) 一.项目背景 项目演示 二.项目介绍 三.涉及技术 总结 源码地址 一.项目背景 "世上本来没有CRM,大家的生 ...

  8. 联系人管理-客户拜访记录| CRM客户关系管理系统项目 实战七(Struts2+Spring+Hibernate)解析+源代码

    联系人管理-客户拜访记录| CRM客户关系管理系统项目 实战七(Struts2+Spring+Hibernate)解析+源代码 客户拜访记录的列表的显示, 客户拜访记录的保存, 客户拜访记录查询(条件 ...

  9. CRM客户关系管理系统商业项目

    本课程共33讲,购买课程后,可以下载项目需求分析文档,数据库设计文档,完整的项目源代码,数据库文件等资料,系统采用jsp,servlet,js,ajax,jquery,easyui,mysql数据库等 ...

最新文章

  1. Python中printf函数中逗号引发的区别
  2. php doss_php下ddos攻击与防范代码
  3. 第二章 spring
  4. 硬刚一周,3W字总结,一年的经验告诉你如何准备校招,拿大厂offer
  5. Python Redis pipeline操作(秒杀实现)
  6. 【Todo】Zookeeper系列文章
  7. python numpy 写入、读取 .npz 压缩文件
  8. redis+mybatis+spring
  9. 【NOIP2002】【codevs1010】过河卒
  10. 在mac上制作PDF的基础教程
  11. 15.卷1(套接字联网API)---Unix域协议
  12. 【zotero】异常与错误,Attachments skipped because they are top-level items,snapshots,an avoided filetype解决方法
  13. 数据库编程之ODBC编程
  14. vue 中动态添加组件方式
  15. HBuilderX 快捷键
  16. 使用showdown.js将Markdown文档转换为HTML
  17. AI时代——人工智能技术图谱,它来啦(机器学习+深度学习学习路线)
  18. 程序人生:如果纯做业务测试的话,在测试行业有出路吗?
  19. 人脸与关键点检测:YOLO5Face实战
  20. Go语言bufio包(读与写)

热门文章

  1. nodejs,python,sublime和Eclipse的包管理器
  2. ABAP和XML数据格式互相转换的两种方式
  3. 一次完整的性能测试过程
  4. proxy connect abort处理方法_Java代理设计模式(Proxy)的几种具体实现
  5. android tv market,安卓市场TV版
  6. android 一个字符串分两行显示_重新梳理Android权限管理
  7. search.php制作,重写搜索Search类
  8. c语言af-1,单反对焦模式中的AF-S、AF-C、AF-A是什么意思,
  9. 海信计算机辅助统,海信计算机辅助手术系统将覆盖山东三级医院
  10. oracle 拼接_老品牌三明49寸液晶拼接屏多少钱支持定制