300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Django项目:CRM(客户关系管理系统)--12--05PerfectCRM实现King_admin注册功能获取内存01...

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

时间:2021-01-27 08:28:08

相关推荐

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

1 #base_admin.py 2 #Django admin 注册功能的形式 3 # sites = {4 #'crm':{5 # 'customers':CustomerAdmin, 6 # 'customerfollowup':CustomerFollowUPAdmin, 7 #} 8 # } 9 10 class AdminRegisterException(Exception): #自定义异常11def __init__(self,msg):12 self.message = msg13 14 class BaseAdmin(object):#自定义方法15list_display = ()16 17 class AdminSite(object):18def __init__(self):19 self.registered_sites = {} #传到views 里调用20def register(self,model,admin_class=None): #默认值None 使用 BaseAdmin21 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 使用 BaseAdmin30 31 self.registered_sites[app_name][model_name] = admin_class #注册APP32 33 site = AdminSite() #实例化类 单例模式34 35 36 # registered_sites={}37 # def register(model,admin_class=None): #默认值None 使用 BaseAdmin38 #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 BaseAdmin47 #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)12list_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_admin12 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 23print("registered_sites",base_admin.site.registered_sites)24return 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#}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。