2014-03-27 104 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宏以及許多東西。 –