2010-10-26 6 views
21

Aujourd'hui, j'essaie de jouer avec jquery-tmpl {{if}} & {{else}} instructions.Les balises jquery gabarit le modèle 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> 

Mais comme vous le savez, {{}} est également réservé au modèle django. Ainsi, django émet TemplateSyntaxError qu'il ne peut pas analyser.

Comment puis-je résoudre ce problème?


mise à jour:

J'ai trouvé un travail <%%> balise personnalisée brute (GPL) la mise en œuvre d'ici.

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

Répondre

13

Utilisez la balise de modèle templatetag pour rendre les supports:

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

Il est un peu Checklist, qui est la raison pour laquelle une étiquette de modèle raw a été proposé pour Django 1.3.

+0

Merci Daniel! Mais c'est trop compliqué comme tu l'as dit. Je devrais attendre Django 1.3 ...:) –

+1

Ou Mettez les codes jquery-template non en html mais quelque part dans le code et passez le au template .. :( –

+0

Dans mon cas d'utilisation, les clients CMS appliquent des templates django dans mes fichiers js. la déclaration du moteur de template jQuery lui-même – CharlesTWall3

2

Il y a quelques solutions mentionnées ici:

https://github.com/nje/jquery-tmpl/issues#issue/17 - Edit: Old repo

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

Mon favori est le tag de modèle {% verbatim %} qui vous permet de créer des modèles jQuery depuis Django.

0

J'utilise Django 1.3 et l'ajout

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

à mon fichier html.

Le serveur retourne avec:

tag bloc non valide: « brute »

également dans les documents que je ne peux pas sembler trouver de l'information au sujet de cette balise que vous parlez.

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

+0

Il se peut que la balise Raw ne soit pas encore incluse dans django 1.3 Vous devez donc inclure des codes de tag personnalisés à partir d'ici: http://www.holovaty.com/writing/django-two-phased-rendering / –

0

Je l'ai trouvé par défaut utile si aucune étiquette « mot pour mot » est pris en charge. Cela ressemble à ceci:

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

PS. Note pour les utilisateurs de ChicagoBoss, qui ne supporte pas la balise 'verbatim' dans ErlyDTL.

Questions connexes