我想使用AngularJS与Django,但他们都使用{{}}作为他们的模板标签。是否有一种简单的方法来更改其中之一,以使用其他自定义模板标签?
当前回答
我会坚持使用一个解决方案,既使用django标签{{}},也使用angularjs{{}},并使用一个逐字section或templatetag。
这只是因为你可以通过$interpolateProvider改变angularjs的工作方式(如上所述)。startSymbol interpolateProvider美元。但是如果你开始使用其他angularjs组件,比如ui-bootstrap,你会发现一些模板已经用标准angularjs标签{{}}构建了。
例如,查看https://github.com/angular-ui/bootstrap/blob/master/template/dialog/message.html。
其他回答
如果执行任何服务器端插值,唯一正确的方法是使用<>
$interpolateProvider.startSymbol('<{').endSymbol('}>');
其他任何向量都是XSS向量。
这是因为任何没有被Django转义的Angular分隔符都可以被用户输入到插入的字符串中;如果有人将他们的用户名设置为“{{evil_code}}”,Angular会很乐意运行它。但是,如果您使用的字符没有被Django转义,则不会发生这种情况。
你可以试试逐字逐句的Django模板标签 像这样使用它:
< script src = " https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js " > < /脚本> {% verbatim %} < div ng-app = " " > <p>10是{{5 + 5}}</p> < / div > {% endverbatim %}
你可以使用{% templatetag %}标签告诉Django输出{{和}},以及其他保留的模板字符串。
例如,使用{% templatetag openvariable %}将输出{{。
你总是可以使用ng-bind而不是{{}} http://docs.angularjs.org/api/ng/directive/ngBind
<span ng-bind="name"></span>
如果你使用django 1.5及更新版本:
{% verbatim %}
{{if dying}}Still alive.{{/if}}
{% endverbatim %}
如果你还在使用appengine上的django 1.2,可以使用下面的命令来扩展django语法…
from django import template
register = template.Library()
class VerbatimNode(template.Node):
def __init__(self, text):
self.text = text
def render(self, context):
return self.text
@register.tag
def verbatim(parser, token):
text = []
while 1:
token = parser.tokens.pop(0)
if token.contents == 'endverbatim':
break
if token.token_type == template.TOKEN_VAR:
text.append('{{')
elif token.token_type == template.TOKEN_BLOCK:
text.append('{%')
text.append(token.contents)
if token.token_type == template.TOKEN_VAR:
text.append('}}')
elif token.token_type == template.TOKEN_BLOCK:
text.append('%}')
return VerbatimNode(''.join(text))
在你的文件中使用:
from google.appengine.ext.webapp import template
template.register_template_library('utilities.verbatim_template_tag')
来源: http://bamboobig.blogspot.co.at/2011/09/notebook-using-jquery-templates-in.html
推荐文章
- Babel 6改变了它导出默认值的方式
- 如何配置历史记录?
- ES6模板文字可以在运行时被替换(或重用)吗?
- [Vue警告]:找不到元素
- 如何在django应用程序中显示favicon ?
- 可以在setInterval()内部调用clearInterval()吗?
- AngularJS控制器的生命周期是什么?
- 无法读取未定义的属性“msie”- jQuery工具
- 我的蛋蛋怎么不见了?
- JavaScript中的排列?
- JavaScript中有睡眠/暂停/等待功能吗?
- 如何禁用文本选择使用jQuery?
- 如何停止事件冒泡复选框点击
- 向对象数组添加属性
- 如何在Redux应用程序中动态加载代码分割的减速器?