2010-10-26 241 views
21

今天我試着玩jquery-tmpl {{if}} & {{else}}語句。jquery模板標籤與Django模板衝突!

<script id="mission-dialog" type="text/x-jquery-tmpl"> 
    <h3>${name}</h3> 
    <p>${description}</p> 
    <ul> 
     {{each(i,cond) conditions.data}} 
     <li> 
      <img src="${cond.image}"/> 
      <h4>${cond.name}</h4> 
      <p class="status">${cond.status.value}/${cond.status.max}</p> 
     </li> 
     {{/each}} 
    </ul> 
</script> 

但如你所知{{}}也保留爲django模板。 所以Django會發出TemplateSyntaxError,它無法解析它。

我該如何解決這個問題?


更新:

我找到了一個工作<%的原始%>自定義標籤(GPL)實現從這裏開始。

http://www.holovaty.com/writing/django-two-phased-rendering/

回答

13

使用templatetag模板標籤來顯示括號:

{% templatetag openvariable %}each(i,cond) conditions.data{% templatetag closevariable %} 

這是一個有點繁瑣,這就是爲什麼raw模板標籤已經提出的Django 1.3。

+0

謝謝丹尼爾!但是,如你所說,它太過於繁瑣。我應該等待Django 1.3 ...:) – 2010-10-26 09:01:25

+1

或將jquery-template代碼不在html中,但在代碼中的某處並將其傳遞給模板。:( – 2010-10-26 09:11:57

+0

在我的使用案例中,客戶端CMS在我的js文件中應用了django模板。 jQuery模板引擎本身的聲明 – CharlesTWall3 2012-12-17 22:29:05

2

這裏有提到的幾個解決方案:

https://github.com/nje/jquery-tmpl/issues#issue/17 - 編輯:老回購

https://github.com/jquery/jquery-tmpl/issues/#issue/74

我最喜歡的是{% verbatim %}模板標籤,它允許您從Django的模板標籤中構建jQuery模板。

0

我使用Django 1.3,加入

{% raw %} this should be ignored by django's template framework {% endraw %} 

到我的HTML文件。

服務器返回一個:

無效的塊標籤:「生」

而且在docs我似乎無法找到關於這個標籤你談論的信息。

https://docs.djangoproject.com/en/1.3/ref/templates/builtins/

+0

原始標籤可能不包含django 1.3,所以你需要在這裏包含自定義標籤代碼:http://www.holovaty.com/writing/django-two-phased-rendering / – 2011-07-26 07:49:43

0

我發現默認如果不支持任何「逐字」標籤是有用的。 看起來來樣:

{{ some_undefined_variable|default: '....here goes the subject template....'}} 

PS。請注意ChicagoBoss的用戶,該用戶不支持ErlyDTL中的'verbatim'標籤。