Django template for 标签 结合使用字典,javascript
来源:互联网 发布:淘宝达人公域权限开通 编辑:程序博客网 时间:2024/06/11 08:05
- 介绍
本文主要介绍在Django template里如何使用字典,并且结合着javascript使用,可以更加高效的开发前端页面。 - 背景:
以前编写Django template的时候,javascript都是单独编写的,通常要查好多资料才能实现比较复杂的功能,最近开发的一个前端页面里包涵SVG图像,所以感觉完全用jQuery来解决需求有点麻烦,就突然意识到既然Django template tag 可以动态的渲染页面,那么是不是可以动态的渲染javascript,查了一下发现可以。然后就实践了一下,Django template tag 的用法可以结合javascript使用,感觉挺好用的,虽然在前端显示看着有些傻逼,但是真正编程的话感觉很高效。 - 代码示例
<script type="text/javascript"> $(document).ready(function(){ {%for cage in cage_list %} var cagename='{{cage.cagename}}'; $("#"+cagename+" g[class='position-space'] > rect").attr('style','fill:'+'green'+';'); {%for rack in rack_list|get_item:cage.cagename %} {% if rack.type == 'Network' %} $("#{{cage.cagename}} g[data-name='{{rack.position}}'] > rect ").attr('style','fill:#ffffff;'); {% endif %} {% if rack.status == False %} $("#{{cage.cagename}} g[data-name='{{rack.position}}'] > rect").attr('style','fill:red'); {% endif %} {%endfor%} {%endfor%} popover_focus_info(); })
需要注意的是其中{%for rack in rack_list|get_item:cage.cagename %}
的get_item是我自己定一个tag标签,Django自带的标签对于字典形式的数据支持不太好,查了一些资料发现很久之前就有人就有人提交相关的tag解决方法,但是不知道什么原因一只没有采用。get_item的构造如下
#custom_tagfrom django.template.defaulttags import register@register.filterdef get_item(dictionary, key): return dictionary.get(key)
- 搞笑的前端效果代码
$(document).ready(function(){ var cagename='5-1'; $("#"+cagename+" g[class='position-space'] > rect").attr('style','fill:'+'green'+';'); $("#5-1 g[data-name='3116'] > rect").attr('style','fill:red'); $("#5-1 g[data-name='N1'] > rect ").attr('style','fill:#ffffff;'); var cagename='5-2'; $("#"+cagename+" g[class='position-space'] > rect").attr('style','fill:'+'green'+';'); var cagename='6-1'; $("#"+cagename+" g[class='position-space'] > rect").attr('style','fill:'+'green'+';'); $("#6-1 g[data-name='N1'] > rect ").attr('style','fill:#ffffff;'); popover_focus_info(); })
请忽略混乱的格式,从上面的代码我门可以开出来,Django的template只是将代码的简单翻译,并不能实现比较酷炫的功能实现,当条目比较多的时候。你就会看到满屏都是重复功能多javascript代码,所以直接看前端代码会觉的这个写前端的有些傻逼,但是如果你是pythoner,你就应该知道其实他后端是使用这样的机制,这样的用法的有些优缺点:
如果你对前端语言不太熟悉的话,可能会减轻你的痛苦,并且用自己最熟悉的语言开发真的会很高效。
缺点:
最后前端的代码不够优美,对于python的理念有些不同,还有就是用翻译过来的javascript的语法,运行速度是否受影响有待考察?
0 0
- Django template for 标签 结合使用字典,javascript
- django使用inclusion_tag标签封装数据字典
- Django中template 使用
- Django中块标签for endfor的使用
- 结合使用 MongoDB 和 Django
- 结合使用 MongoDB 和 Django
- 使用pydiction导出django字典
- C++ 的lambda 与template结合使用
- django template 自定义filter的使用
- Django template
- Django template
- django template
- Django Template
- Django Template
- [django]添加自定义template filter标签
- PythonWeb开发Django框架学习(五)Template标签
- Django学习笔记(二)Django使用template
- django.for的使用
- Oracle常用系统内置函数
- Android下谷歌zxing二维码的最大容量
- ssh证书登录(密钥创建与用户设置)
- js 找出从1到n的序列中缺少的三个数
- linux中一些常用指令
- Django template for 标签 结合使用字典,javascript
- 舍我其谁
- 关于LeetCode中Minimum Depth of Binary Tree一题的理解
- android 获取相册列表的实现及源码下载(一)
- 数据库优化-水平拆分 垂直拆分
- Android开发——View滑动的三种实现方式
- [2017腾讯校招在线笔试题]
- HDU 5875 Function
- slf4j