解决Angular.Js与Django标签冲突的方案


Posted in Javascript onDecember 20, 2016

前言

大家应该都知道,Django和Angular的模板系统使用了非常相似的标签系统,比如说,都是使用{{ content }}表示变量名字。所以Django和Angular配合使用的时候,会引起冲突。我在网上找到了一些解决方法。现在总结后分享给大家,下面来一起看看吧。

一、 改变AngularJs的默认标签

下面的代码可以将Angular原来的标签改成{[{ content }]}

修改Angular的标签

myModule.config(function($interpolateProvider) {
 $interpolateProvider.startSymbol('{[{');
 $interpolateProvider.endSymbol('}]}');
});

这是比较简单,并且直观的一种方法。修改之后的代码比较容易阅读,一眼就能看出来是Django的标签还是Angular的。缺点是很容易与第三方的插件冲突(如果第三方的插件使用了指令等用到标签的地方)。

二、 告诉Django不要渲染模板的其中一部分内容

从Django 1.5开始,支持{% verbatim %}标签(verbatim的意思是逐字翻译的,字面意思的),Django不会渲染verbatim标签包裹的内容:

{% verbatim %}
 {{if dying}}Still alive.{{/if}}
{% endverbatim %}

这个标签不支持嵌套,但是你可以为标签添加名字:

{% verbatim myblock %}
 Avoid template rendering via the {% verbatim %}{% endverbatim %} block.
{% endverbatim myblock %}

这样,Django会寻找myblock的endverbatim作为结束的标志,中间插入了verbatim标签,会作为myblock中不解释的一部分处理。

这种方案的优点是,不会增加代码的复杂度,并且是Django的原生支持,对Angular也没有影响。缺点是可能在很多地方用到很多verbatim标签,搞得template很乱。

三、 使用第三方插件

目前,我已知的有django-angular。这个插件有混合django和angular标签的功能。

正确解析angular标签的同时,还可以继续使用django的if等标签。

{% load djng_tags %}
{% angularjs ng %}
<div{% if ng %} ng-repeat="item in items"{% endif %}>
 <h4><a ng-href="{{ item.absolute_url }}"{% if not ng %} href="{{ item.absolute_url }}"{% endif %}>{{ item.name }}</a></h4>
 <img ng-src="{{ item.image.url }}"{% if not ng %} src="{{ item.image.url }}"{% endif %} width="{{ item.image.width }}" height="{{ item.image.height }}" />
 <div{% if ng %} ng-bind-html="item.description"{% endif %}>{% if not ng %}{{ item.description }}{% endif %}</div>
</div>
{% endangularjs %}

这样做的缺点是,引入插件增加了代码的复杂度,团队的所有人都需要学习这种写法,我个人感觉,也比较容易增加错误。

我觉得第二种比较合适, 写入变量的时候尽量前后端分开,django负责返回静态的模板,数据交给angular,没大问题。

总结

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

Javascript 相关文章推荐
Firefox 无法获取cssRules 的解决办法
Oct 11 Javascript
jQuery textarea的长度进行验证
May 06 Javascript
使用js写的一个简易的投票
Nov 27 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
Jan 07 Javascript
JS cookie中文乱码解决方法
Jan 28 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
Feb 22 Javascript
Vue2.0权限树组件实现代码
Aug 29 Javascript
详解Vue路由钩子及应用场景(小结)
Nov 07 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
Sep 14 Javascript
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
解决Vue @submit 提交后不刷新页面问题
Jul 18 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
Oct 19 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
Dec 20 #Javascript
JS基于面向对象实现的拖拽功能示例
Dec 20 #Javascript
详解为Angular.js内置$http服务添加拦截器的方法
Dec 20 #Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
Dec 20 #Javascript
JS简单实现表格排序功能示例
Dec 20 #Javascript
深入了解JavaScript的逻辑运算符(与、或)
Dec 20 #Javascript
js定时器实例分享
Dec 20 #Javascript
You might like
PHP 创建标签云函数代码
2010/05/26 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
2018/11/30 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
Python自动化测试工具Splinter简介和使用实例
2014/05/13 Python
python实现聊天小程序
2018/03/13 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
Python切图九宫格的实现方法
2019/10/10 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
个人安全承诺书
2014/05/22 职场文书
公司档案管理制度
2015/08/05 职场文书
党员干部学习心得体会
2016/01/23 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书