Django项目:CRM(客户关系管理系统)--17--09PerfectCRM实现King_admin显示注册表的内容

 1 {#table_data_list.html#}
 2 {## ————————08PerfectCRM实现King_admin显示注册表的字段表头————————#}
 3 
 4 {% extends 'king_master/king_index.html' %}   {#继承模板#}
 5 {% load kingadmin_tags %} {#通过自己定义标签获取中文,Django中利用filter与simple_tag为前端自定义函数的实现方法#}
 6 
 7 {% block right-container-content %}
 8 
 9     {#调用kingadmin_tags里的方法  获取   base_admin的值 #}
10     <h4>{% get_model_verbose_name admin_obj.model  %}</h4>
11 
12     <table class="table table-hover">
13           <thead>
14             <tr>
15             {#循环调用kingadmin/base_admin里的class BaseAdmin下的list_display = () 方法#}
16                 {% for column in admin_obj.list_display %}
17                     <th>{{ column }}</th>
18                 {% endfor %}
19             </tr>
20           </thead>
21 
22         {## ————————09PerfectCRM实现King_admin显示注册表的内容————————#}
23           <tbody>
24             {#循环调用kingadmin/views 里的def table_data_list下的admin_obj.querysets #}
25             {% for obj in admin_obj.querysets %}
26                 <tr>
27                     {#通过kingadmin_tags在后台处理 再传到前端 #}
28                     {#调用kingadmin/templateags/kingadmin_tags 里的def build_table_row(admin_obj,obj):#}
29                     {% build_table_row  admin_obj obj  %}
30                 </tr>
31             {% endfor %}
32           </tbody>
33         {## ————————09PerfectCRM实现King_admin显示注册表的内容————————#}
34 
35     </table>
36 
37 
38 {% endblock %}
39 {## ————————08PerfectCRM实现King_admin显示注册表的字段表头————————#}
{#table_data_list.html#}

 1 #views
 2 
 3 # ————————02PerfectCRM创建ADMIN页面————————
 4 from django.shortcuts import render
 5 
 6 # ————————04PerfectCRM实现King_admin注册功能————————
 7 # from django import conf #配置文件
 8 # print("dj conf:",conf) #配置文件
 9 # print("dj conf:",conf.settings)#配置文件.设置
10 # ————————04PerfectCRM实现King_admin注册功能————————
11 
12 # ————————04PerfectCRM实现King_admin注册功能————————
13 from king_admin import app_config #自动调用  动态加载类和函数
14 # ————————04PerfectCRM实现King_admin注册功能————————
15 # ————————04PerfectCRM实现King_admin注册功能————————
16 # from king_admin.base_admin import registered_sites # registered_sites={}
17 from king_admin import base_admin
18 # ————————04PerfectCRM实现King_admin注册功能————————
19 
20 def app_index(request):
21     # ————————04PerfectCRM实现King_admin注册功能————————
22     # for app in conf.settings.INSTALLED_APPS:
23     #     print(app)#循环打印 配置文件.设置.安装应用程序#.Perfectcustomersettings里的INSTALLED_APPS列表
24     # ————————04PerfectCRM实现King_admin注册功能————————
25     
26     # ————————04PerfectCRM实现King_admin注册功能————————
27     # return render(request, 'king_admin/app_index.html')
28     # print("registered_sites",registered_sites)
29     # return render(request, 'king_admin/app_index.html')
30     # ————————04PerfectCRM实现King_admin注册功能————————
31 
32     # ————————04PerfectCRM实现King_admin注册功能————————
33     # print("registered_sites", base_admin.registered_sites)
34     # return render(request, 'king_admin/app_index.html')
35     # ————————04PerfectCRM实现King_admin注册功能————————
36     
37     # ————————05PerfectCRM实现King_admin注册功能获取内存————————
38     print("registered_sites",base_admin.site.registered_sites)
39     return render(request, 'king_admin/app_index.html', {"site": base_admin.site})
40 # ————————05PerfectCRM实现King_admin注册功能获取内存————————
41 
42 # ————————02PerfectCRM创建ADMIN页面————————
43 
44 
45 
46 # ————————08PerfectCRM实现King_admin显示注册表的字段表头————————
47 def table_data_list(request,app_name,model_name):
48     #通过2个参数到base_admin里获取class AdminRegisterException(Exception): 的对象
49     admin_obj = base_admin.site.registered_sites[app_name][model_name]  #base_admin
50 
51     # ————————09PerfectCRM实现King_admin显示注册表的内容————————
52     admin_obj.querysets =  admin_obj.model.objects.all()#取数据 传到 前端
53     # ————————09PerfectCRM实现King_admin显示注册表的内容————————
54 
55     return render(request,"king_admin/table_data_list.html",locals())
56 # ————————08PerfectCRM实现King_admin显示注册表的字段表头————————
#views

 

 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注册功能获取内存优化处理————————
28 
29 # ————————07PerfectCRM实现King_admin显示注册的表————————
30 #因为前端禁止使用下划线开头(_meta.verbose_name ),所以通过后端处理后返回前端。
31 from django import template #模板
32 register = template.Library() #模板库
33 
34 @register.simple_tag #Django中利用filter与simple_tag为前端自定义函数的实现方法
35 def get_model_verbose_name(model_obj):
36     '''
37      #判断 数据库 里如果有  verbose_name  或者  verbose_name_plural 就 调用  如果都没有 就使用默认的(英文)
38         class Meta:
39         verbose_name = "04客户信息表"           #在 Django  Admin 里 表名显示中文 但是会加s
40         verbose_name_plural = "04客户信息表"    #在 Django  Admin 里 表名显示中文 不会加s
41     '''
42     model_name = model_obj._meta.verbose_name_plural if model_obj._meta.verbose_name else model_obj._meta.verbose_name_plural
43     if not model_name:
44         model_name = model_obj._meta.model_name
45     return model_name
46 
47 @register.simple_tag
48 def get_model_name(model_obj):
49     return model_obj._meta.model_name
50 @register.simple_tag
51 def get_app_name(model_obj):
52     return model_obj._meta.app_label
53 # ————————07PerfectCRM实现King_admin显示注册的表————————
54 
55 
56 # ————————09PerfectCRM实现King_admin显示注册表的内容————————
57 from django.utils.safestring import mark_safe #使用mark_safe函数标记后,django将不再对该函数的内容进行转义
58 @register.simple_tag
59 def build_table_row(admin_obj,obj):#通过kingadmin_tags在后台处理 再传到前端
60     row_ele = "" #为了生成一整行返回前端
61     if admin_obj.list_display:#如果不为空,有在crm/kingadmin.py注册site.register(models.Customer,CustomerAdmin)
62         #循环所有 要显示 的字符串 进行反射 展示 字段
63         for column in admin_obj.list_display: #循环base_admin里class BaseAdmin下list_display = ()
64             column_obj = obj._meta.get_field(column)#遍历获取  传进的参数对象
65 
66             if column_obj.choices:#判断如果字段有choices属性
67                 #获取choices的字符串(外健)
68                 get_column_data = getattr(obj,"get_%s_display" % column) #反射,传进的参数对象,拼接字段
69                 column_data = get_column_data()#函数,拿到数据
70             else:
71                 column_data = getattr(obj, column)#反射,
72 
73             td_ele = '''<td>%s</td>''' % column_data  #把反射来的值 拼接字符串 生成<td>
74             row_ele += td_ele    #把 <td>  拼接到上面到空字符串
75     else:
76         row_ele +="<td>%s</td>" %obj  #把<td>拼接到上面到空字符串,crm/models.py里 def __str__(self):的返回值
77     return mark_safe(row_ele) #使用mark_safe函数标记后,django将不再对该函数的内容进行转义
78 # ————————09PerfectCRM实现King_admin显示注册表的内容————————
#kingadmin_tags.py

 

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

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