2010-10-26 10 views
21

Dzisiaj próbuję grać z instrukcjami jquery-tmpl {{if}} & {{else}}.Tagi szablonów jquery są w konflikcie z szablonem 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> 

Ale jak wiadomo {{}} jest zarezerwowany również dla szablonu django. Więc django wyśle ​​TemplateSyntaxError, że nie może go przetworzyć.

Jak mogę rozwiązać ten problem?


aktualizacja:

znalazłem pracę <% surowego%> niestandardowy tag (GPL) realizację stąd.

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

Odpowiedz

13

użyć tagu templatetag szablon do renderowania wsporniki:

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

To trochę skomplikowanego, dlatego tag raw szablon został zaproponowany dla Django 1.3.

+0

Dzięki Daniel! Ale to zbyt dziwaczne, jak mówisz. Powinienem poczekać na Django 1.3 ...:) –

+1

Lub Umieść kody szablonów jquery nie w HTML, ale gdzieś w kodzie i przekaż go do szablonu .. :( –

+0

W moim przypadku użycia, klienci CMS stosuje szablony django w moich plikach js. Konflikty faktycznie idą tak głęboko jak deklaracja silnika szablonów jQuery sama w sobie – CharlesTWall3

2

Istnieje kilka rozwiązań wymienione tutaj:

https://github.com/nje/jquery-tmpl/issues#issue/17 - Edycja: Stary repo

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

Moim ulubionym tagiem szablonu jest {% verbatim %}, który pozwala budować szablony jQuery z poziomu Django.

0

Używam Django 1.3 i dodanie

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

do mojego pliku html.

Serwer zwraca z:

Nieprawidłowy blok tag: „surowy”

Również w docs nie mogę wydawać się znaleźć informacje na temat tego tagu mówisz.

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

+0

Nieodłączony tag Raw może nie być jeszcze dołączony do Django 1.3. Musisz więc wprowadzić niestandardowe kody znaczników tutaj: http://www.holovaty.com/writing/django-two-phased-rendering / –

0

Znalazłem domyślne być przydatne, jeśli nie „verbatim” znacznik jest obsługiwany. Wygląda to tak:

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

PS. Uwaga dla użytkowników aplikacji ChicagoBoss, która nie obsługuje znacznika "verbatim" w pliku ErlyDTL.

Powiązane problemy