#base_admin.py
#Django admin 注册功能的形式
# sites = {
# 'crm':{
# 'customers':CustomerAdmin,
# 'customerfollowup':CustomerFollowUPAdmin,
# }
# } class AdminRegisterException(Exception): #自定义异常
def __init__(self,msg):
self.message = msg class BaseAdmin(object):#自定义方法
list_display = () class AdminSite(object):
def __init__(self):
self.registered_sites = {} #传到views 里调用
def register(self,model,admin_class=None): #默认值None 使用 BaseAdmin
app_name = model._meta.app_label#用内置方法获取 APP名字 (crm)
model_name = model._meta.model_name#用内置方法获取 表名 (Customer)
if app_name not in self.registered_sites:
self.registered_sites[app_name] = {} #创建 crm={}
if model_name in self.registered_sites[app_name]:
raise AdminRegisterException("app [%s] model [%s] has already registered!异常"
%(app_name,model_name))#自定义异常,
if not admin_class:
admin_class = BaseAdmin #默认值None 使用 BaseAdmin self.registered_sites[app_name][model_name] = admin_class #注册APP site = AdminSite() #实例化类 单例模式 # registered_sites={}
# def register(model,admin_class=None): #默认值None 使用 BaseAdmin
# app_name = model._meta.app_label#用内置方法获取 APP名字 (crm)
# model_name = model._meta.model_name#用内置方法获取 表名 (Customer)
# if app_name not in registered_sites:
# registered_sites[app_name] = {} #创建 crm={}
# if model_name in registered_sites[app_name]:
# raise AdminRegisterException("app [%s] model [%s] has already registered!异常"
# %(app_name,model_name))#自定义异常
# if not admin_class:
# admin_class = BaseAdmin #默认值None 使用class BaseAdmin
# registered_sites[app_name][model_name] = admin_class #注册APP

#base_admin.py

site.register(models.Customer,CustomerAdmin)
site.register(models.CourseRecord)
 #kingadmin.py

 from crm import models
#print("kingadmin crm",models.Customer) # from king_admin.base_admin import register,BaseAdmin
from king_admin.base_admin import site,BaseAdmin #05客户信息表
class CustomerAdmin(BaseAdmin):
#显示的字段(不能包含ManyToManyField)
list_display= ('id','name','qq','consultant','source','consult_content','status','date') # register(models.Customer,CustomerAdmin)
# register(models.CourseRecord) site.register(models.Customer,CustomerAdmin)
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})
 #views.py
from django.shortcuts import render # from django import conf #配置文件
# print("dj conf:",conf) #配置文件
# print("dj conf:",conf.settings)#配置文件.设置 from king_admin import app_config #自动调用 动态加载类和函数 # from king_admin.base_admin import registered_sites # registered_sites={}
from king_admin import base_admin def app_index(request):
# for app in conf.settings.INSTALLED_APPS:
# print(app)#循环打印 配置文件.设置.安装应用程序#.Perfectcustomer\settings里的INSTALLED_APPS列表 # print("registered_sites",registered_sites)
# return render(request, 'king_admin/app_index.html') # print("registered_sites", base_admin.registered_sites)
# return render(request, 'king_admin/app_index.html') print("registered_sites",base_admin.site.registered_sites)
return render(request, 'king_admin/app_index.html', {"site": base_admin.site})

#views.py

 {#app_index.html#}

 {% extends 'king_master/king_index.html' %}

 {% block right-container-content %}

     {#从base_admin传到views,views返回的值items()方法把字典转换成列表#}
{% for app,app_tables in site.registered_sites.items %} <table class="table table-hover">
<thead>
<tr>
<h3>{{ app }}</h3>{#循环APP名字#}
</tr>
</thead> <tbody>
{#上层循环的变量值,items()方法把字典转换成列表#}
{% for model_name,admin_class in app_tables.items %}
<tr>
<th >{{ model_name }}{{ admin_class }} </th>
</tr>
{% endfor %}
</tbody>
</table>
{% endfor %} {% endblock %}

{#app_index.html#}

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

  1. Django项目:CRM(客户关系管理系统)--14--06PerfectCRM实现King_admin注册功能获取内存优化处理

    <th >{% get_app_name admin_class.model %}{{ admin_class }} </th> #kingadmin_tags.py # —— ...

  2. Django项目:CRM(客户关系管理系统)--53--44PerfectCRM实现账号快速注册登陆

    # gbacc_ajax_urls.py # ————————42PerfectCRM实现AJAX全局账号注册———————— from django.conf.urls import url fro ...

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

    admin_class.model = modelself.registered_sites[app_name][model_name] = admin_class #注册APP #base_admi ...

  4. Django项目:CRM(客户关系管理系统)--49--40PerfectCRM实现全局账号注册+验证码+页面刷新保留信息

    # gbacc_urls.py # ————————38PerfectCRM实现全局账号登录注销———————— from django.conf.urls import url from gbacc ...

  5. Django项目:CRM(客户关系管理系统)--84--74PerfectCRM实现CRM权限和权限组限制访问URL

    #models.py # ————————01PerfectCRM基本配置ADMIN———————— from django.db import models # Create your models ...

  6. Django项目:CRM(客户关系管理系统)--85--75PerfectCRM实现CRM扩展权限

    # sales_urls.py # ————————47PerfectCRM实现CRM客户报名流程———————— from django.conf.urls import url from bpm. ...

  7. Django项目:CRM(客户关系管理系统)--82--72PerfectCRM实现CRM动态菜单和角色

    #models.py # ————————01PerfectCRM基本配置ADMIN———————— from django.db import models # Create your models ...

  8. Django项目:CRM(客户关系管理系统)--32--24PerfectCRM实现King_admin自定义操作数据

    #admin.py # ————————01PerfectCRM基本配置ADMIN———————— from django.contrib import admin # Register your m ...

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

    #base_admin.py # ————————24PerfectCRM实现King_admin自定义操作数据———————— from django.shortcuts import render ...

随机推荐

  1. Cesium官方教程12--材质(Fabric)

    原文地址:https://github.com/AnalyticalGraphicsInc/cesium/wiki/Fabric 介绍 Fabric 是Cesium中基于JSON格式来描述materi ...

  2. PAT甲级——A1077 Kuchiguse

    The Japanese language is notorious for its sentence ending particles. Personal preference of such pa ...

  3. Django自带的认证系统

    Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...

  4. python 筛选序列中的元素

    列表生成式 a = [1, 2, 3, 4, -1, -2] b = [i for i in a if a > 0] 如果数据量很大,会产生一个庞大的结果.这时可以用生成器表达式: b = (i ...

  5. [Turn]C# 强制关闭当前程序进程(完全Kill掉不留痕迹)

    C#代码 /// <summary> /// 运行DOS命令 /// DOS关闭进程命令(ntsd -c q -p PID )PID为进程的ID /// </summary> ...

  6. vue 实现邮戳边缘

    效果: vue: <template> <div class="couponItem"> <div class="itemLeft" ...

  7. react使用swiper,解决添加点击事件首位图片点击失效,解决轮播按钮被覆盖问题

    JS部分 createSwiper1() { var option = { // slidesPerView: 5, slidesPerView: 3, centeredSlides:true, }; ...

  8. 利用zepto.js实现移动页面图片全屏滑动

    HTML <%-- Created by IntelliJ IDEA. User: fanso2o Date: 2017/2/28 Time: 16:09 To change this temp ...

  9. Mybatis框架+原理

    https://www.cnblogs.com/luoxn28/p/6417892.html(转载,蛮详细的)

  10. Django项目:CRM(客户关系管理系统)--80--70PerfectCRM实现CRM业务流程(bpm)课程排行分页

    # coursetop_views.py # ————————64PerfectCRM实现CRM课程排名详情———————— #————班级学生详情——#计算#{学员ID:分数}——#计算 #{学员I ...