Django模板变量如何传递给外部js调用的方法小结


Posted in Python onJuly 24, 2017

前言

因为工作的需要,最近一直在思考如何更好的组织Django中的静态资源,比如JS、CSS一类,如何结合前端构建工具写出更好的代码以及结构呢?下面这篇文章就给大家详细介绍了实现的方法,话不多说,来一起看看详细的介绍:

方法如下:

首先需要解决的一个问题就是某些时候需要把JS代码写在模板里来获取后台传递过来的变量,比如:

<div>
<h1>Test</h1>
<div id="my-test" ></div>
</div>
<script>
$(function(){
 $('#my-test').html("{{ some_var_from_view }}")
});
</script>

这么写代码的话,别扭不说,前端的那些构建工具比如webpack,gulp的使用范围也将大大降低。

首先说结论,想完全剥离JS和模板而又需要使用模板渲染的数据,我是没想到什么好办法。如果读者有好办法希望赐教。
既然不能完全剥离,那么就进最大的努力分离JS所需的数据和代码吧。

既然需要模板渲染数据给JS使用,最先想到的办法就是把数据渲染到HTML代码中并隐藏。这种方法的优点就在于简单,甚至模板中都可以完全不使用<script></script>标签。缺点则是会渲染出很多的隐藏字段,JS中要写大量的getElementsByxxxx一类的代码来获取数据。

既然如此,那么使用一种折中的办法,在HTML中使用<script></script>标签将后台传递的数据渲染成JS对象,然后JS代码中则可以直接使用这个对象了。

比如模板中:

<script>
var MyViewVar = {
 var_1: {{ var_1 }},
 var_2: {{ var_2 }},
};
</script>
...
<script type="text/javascript" src="/js/test_script.js"></script>

使用这种方式需要注意一点就是尽量先写渲染JS变量的代码,比如写在head中,然后再引入外部JS文件。这样,在test_script.js中就可以直接使用MyViewVar这个对象了。

当然了,既然现在流行SPA(Single Page Application)网站,那么django作为后端仅提供JSON数据也是一种办法,不过这样比较考验前端人员的能力了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python捕捉和模拟鼠标事件的方法
Jun 03 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 Python
Python 实现自动导入缺失的库
Oct 29 Python
使用pyinstaller逆向.pyc文件
Dec 20 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
Python实现爬取并分析电商评论
Jun 19 Python
Python爬取梨视频的示例
Jan 29 Python
TensorFlow的环境配置与安装方法
Feb 20 Python
Python3 多线程(连接池)操作MySQL插入数据
Jun 09 Python
Python循环之while无限迭代
Apr 30 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
Jul 24 #Python
apache部署python程序出现503错误的解决方法
Jul 24 #Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 #Python
Python实现购物程序思路及代码
Jul 24 #Python
python实现上传下载文件功能
Nov 19 #Python
分享几道你可能遇到的python面试题
Jul 24 #Python
python 判断是否为正小数和正整数的实例
Jul 23 #Python
You might like
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
php接口隔离原则实例分析
2019/11/11 PHP
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
vue 项目引入echarts 添加点击事件操作
2020/09/09 Javascript
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
python实现合并两个数组的方法
2015/05/16 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
学校办公室主任职责
2013/12/27 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
花坛标语大全
2014/06/30 职场文书
审计班子对照检查材料
2014/08/27 职场文书
电力培训心得体会
2014/09/02 职场文书
2014年部门工作总结
2014/11/12 职场文书
英语通知范文
2015/04/22 职场文书
在校生证明
2015/06/17 职场文书
竞聘书的秘诀
2019/04/02 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL