python django 多级业务树形结构规划及页面渲染

项目说明

  设计一个 业务 树形结构规划,多层灵活型结构,

  从 建表设计 到  浏览器前端展示 整体的结构规划

  使用 python django web框架;和一个js 树形结构插件treeview(插件说明 http://www.cnblogs.com/jyh317/p/3763564.html)

表设计

  使用django models 设计表, 字段如下,新增业务时,在 upper_business 字段填上该业务的直属上级业务 ID 号(此id号为该表中已经存在的业务id号),若新增业务为最上级业务 upper_business 为空。

#工作业务class Business_detail(models.Model):    upper_business = models.IntegerField(blank=True, null=True, verbose_name=u'上级业务')    name = models.CharField(max_length=100, unique=True, verbose_name=u'业务名称')    info = models.TextField(max_length=200, null=True, blank=True, verbose_name=u'业务说明')    domain = models.CharField(max_length=50, null=True, blank=True, verbose_name=u'域名')    monitor_url = models.CharField(max_length=50, null=True, blank=True, verbose_name=u'监控页面')    comment = models.CharField(max_length=100, blank=True, null=True, verbose_name=u'备注')

登录后复制

在 django admin 后台添加新业务如图;可自行设计自己的前端新增业务页面,约束字段(如上级业务必须填写已存在id)

立即学习“Python免费学习笔记(深入)”;

1.png

1.png

########  开始前端展示 #########

视图函数

   在django views 中添加业务展示视图,使用django 特色models 查询出第一级业务(第一级业务唯一)传递到模板层

 def businessBasic(request):    businessObj = Business_detail.objects.all()     firster = businessObj.get(id=1)     #得到第一级业务     return render_to_response('eams/businessBasic.html', locals())

登录后复制

前端模板

  浏览此下之前,需要对js 树形结构插件treeview 的使用有所了解

  先载入treeview js文件

      

登录后复制

业务树div 主体设计

{% load eamsfilter %}            
            
                    
  • {{ firster.name }}                    {% if firster.id|getNextBusiness %}                          
                              {% for node in firster.id|getNextBusiness %}                             {% include "eams/businessNode.html" %}                          {% endfor %}                        
                        {% endif %}                
  •             
             $("#tree").treeview();         

登录后复制

模板过滤器(eamsfilter.py)代码, 此处不做更多解释

#-*-coding:utf-8-*-__author__ = 'zhouwang'from eams_apps.models import *from django import templateregister = template.Library()@register.filter(name='getNextBusiness')def getNextBusiness(value):    return Business_detail.objects.filter(upper_business = value)

登录后复制

节点模板(核心)eams/businessNode.html,当父级业务判断有下级业务时,引入此模板,提出节点代码为单独的html文件,方便复用及模板层的迭代,模板迭代的设计,实现业务节点多层(未知层数)结构展示

{% load eamsfilter %}  

登录后复制{{ node.name }}      {% if node.id|getNextBusiness %}                  {% for node in node.id|getNextBusiness %}              {% include “eams/businessNode.html” %}          {% endfor %}            {% endif %}

前端效果

1.png

  模板代码预留了业务节点 id 号,前端点击触发业务节点,ajax 请求节点业务信息及页面展示获取的节点信息, 不再继续阐述。。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2283433.html

(0)
上一篇 2025年2月27日 20:08:35
下一篇 2025年2月19日 15:22:00

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论