我有一个瓶的网站,我想使用AngularJS JavaScript框架。 不幸的是,它好像分隔符重叠。
如何使用角与Jinja2的,如果两者都依赖于双花括号{{ expr }}
它甚至有可能?
我有一个瓶的网站,我想使用AngularJS JavaScript框架。 不幸的是,它好像分隔符重叠。
如何使用角与Jinja2的,如果两者都依赖于双花括号{{ expr }}
它甚至有可能?
你有一些选择。
1)更改角的分隔符符号:
var app = angular.module('Application', []);
app.config(['$interpolateProvider', function($interpolateProvider) {
$interpolateProvider.startSymbol('{a');
$interpolateProvider.endSymbol('a}');
}]);
无论选择的开始和结束的符号将作为新的分隔符。 在这种情况下,你会用快递向角变量{a some_variable a}
。
这种方法只需要的优势,进行一次并且是明确的设定。
2)更改的Jinja2定界符符号。
覆盖或子类Flask.jinja_options.update
开Flask
,绑定到你的应用程序对象(相关瓦尔: block_start_string
, block_end_string
, variable_start_string
, variable_end_string
, comment_start_string
, comment_end_string
):
jinja_options = app.jinja_options.copy()
jinja_options.update(dict(
block_start_string='<%',
block_end_string='%>',
variable_start_string='%%',
variable_end_string='%%',
comment_start_string='<#',
comment_end_string='#>'
))
app.jinja_options = jinja_options
由于有敏感数据的到来未膨胀的从服务器端的风险较高,我建议而不是改变对中你不是唯一的开发任何项目的前端(即角)的语法。
3)输出一个原始块中的Jinja2使用{% raw %}
或{% verbatim %}
:
<ul>
{% raw %}
{% for item in seq %}
<li>{{ some_var }}</li>
{% endfor %}
{% endraw %}
</ul>
4)使用Jinja2的写在模板中的花括号:
{{ '{{ some_var }}' }}
这将被输出为{{ some_var }}
在HTML。
我的方法#1偏好是显而易见的,但任何上述的正常工作。
还有另一种选择: 烧瓶三角是一个扩展,以帮助您构建形式,而在整合的Jinja2模板角。 代替改变角度(或Jinja2的)支架分隔符,则可以简单地添加的标识符来告诉的Jinja2如果表达式必须被呈现为角之一。 只需添加|angular
的变量之后:
<div>{{variable|angular}}</div>
这将在HTML输出呈现:
<div>{{variable}}</div>
请注意, 瓶,三角还配备了其他功能(对角风格的建筑形式),但我想可能是要在Jinja2的角模板更具可读性的一个有价值的选择。