2014-03-27 154 views
3

我正在尝试使用flask和angular.js。在使用瓶子渲染页面时,我试图添加一些角度js和两个模板方法(标记)冲突。烧瓶:是否可以指示烧瓶对* *部分模板进行处理?

我想是这样的:

<div> 
    {{ flaskReplacesThis }} 
</div> 
<div> 
    {%?! Ignore this, flask! %?} 
    {{ angularReplacesThis }} 
    {%?! endIgnore %?} 
</div> 

它是:

  • 一个坏主意全面,我应该放弃希望,或
  • 我应该推出自己的解决方案(如果有的话, 怎么样?)。

我试过Google搜索,并没有看到任何我可以完全理解/使用的东西。

回答

9

您可以使用raw块。它里面的任何东西都不会被当作jinja2语法来处理。

<div> 
    {{ flaskReplacesThis }} 
</div> 
<div> 
    {% raw %} 
    {{ angularReplacesThis }} 
    {% endraw %} 
</div> 

这是它的documentation link它。

+0

谢谢见here! :-)现在我的角度替换被破坏了,哈哈。但我很确定这是我做错了什么... – babyshark

3

通常不推荐将服务器端模板(jinja2)和客户端模板(角度)混合在一起,但这是可能的。你可以尝试使用angularjs的$interpolateProvider特性,它可以让你定义一组自定义的分隔符。由于Jinja2的使用{{}}作为分隔符为好,可能是你能告诉角度用不同的东西,说[[]]

<script> 
var customInterpolationApp = angular.module('customInterpolationApp', []); 

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

的官方文档

+0

哦...这也很漂亮。谢谢!是的,我有一种感觉,这是一个不好的主意,但是...我想这是我同时学习2或3个事物的方式。 – babyshark

+0

没问题。我强烈建议使用不同的分隔符,以确保当您尝试调试代码后的特定几个月后不会出现混淆 – codegeek

+0

Erm,混合服务器端和客户端模板没有任何问题。 Jinja2只输出一个Angular然后传递过来的HTML文件。事实上,它非常适用于从极其简单的缓存破坏到Jinja2宏以及许多东西。 –