ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – 是否可以将AngularJS与Jinja2模板引擎一起使用?

2019-09-15 12:56:37  阅读:211  来源: 互联网

标签:python angularjs delimiter jinja2 flask


我有一个Flask站点,我想使用AngularJS JavaScript框架.不幸的是,似乎分隔符重叠.

如果两者都依赖于双花括号({{expr}}),我如何使用Angular和Jinja2?它甚至可能吗?

解决方法:

你有一些选择.

1)更改Angular的分隔符表示法:

var app = angular.module('Application', []);

app.config(['$interpolateProvider', function($interpolateProvider) {
  $interpolateProvider.startSymbol('{a');
  $interpolateProvider.endSymbol('a}');
}]);

无论选择什么开始和结束符号将作为新的分隔符.在这种情况下,您可以使用{a some_variable a}向Angular表达变量.

这种方法的优点是只需要设置一次并且是明确的.

2)更改Jinja2的分隔符表示法.

在绑定到应用程序的Flask对象上覆盖或子类Flask.jinja_options.update(相关变量: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

由于敏感数据从服务器端未扩展的风险较高,我建议在您不是唯一开发人员的任何项目上更改前端(即Angular)的语法.

3)使用{%raw%}或{%verbatim%}在Jinja2中输出raw block

<ul>
{% raw %}
  {% for item in seq %}
      <li>{{ some_var }}</li>
  {% endfor %}
{% endraw %}
</ul>

4)使用Jinja2在模板中编写花括号:

{{ '{{ some_var }}' }}

这将在HTML中以{{some_var}}输出.

我对方法#1的偏好是显而易见的,但上述任何一种都可行.

标签:python,angularjs,delimiter,jinja2,flask
来源: https://codeday.me/bug/20190915/1804873.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有