2010-08-10 5 views
7

J'ai une étiquette qui ressemble à ceci:Comment filtrer un tag de template?

{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %} 

Ce qui rend juste une forme vide. Mais maintenant je veux passer la sortie de cela au filtre escapejs afin que je puisse l'utiliser dans une variable JavaScript. Comment puis je faire ça?

Répondre

14

De nombreuses balises prennent en charge as variablename - c'est-à-dire, mettez simplement as variablename à la fin de la balise, puis la sortie de cette balise est placée dans la variable plutôt qu'affichée.

Cette balise {% partial %} peut supporter cela. Voici un exemple, si elle le fait:

{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form as myvar %}{{ myvar|escapejs }} 

Si la balise en question est le "Partial tag" snippet alors il semble qu'il ne supporte pas. Mais il pourrait probablement être réécrit pour le soutenir.

Vous pouvez utiliser l'extrait "Capture template output as a variable", puis appliquer le filtre au contenu capturé, comme ceci:

{% captureas myvar %}{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %}{% endcaptureas %}{{ myvar|escapejs }} 
+0

Il s'agit d'une version modifiée de l'extrait de balise partielle prenant en charge la dénomination des variables. http://djangosnippets.org/snippets/2104/ Je pense que le sol'n 'captureas' devrait fonctionner. – mpen

+0

+1 pour un tag personnalisé captureas –

1

Une autre solution pour obtenir les données dans une variable JS:

<div class="display:none" id="empty-vehicle-form">{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %}</div> 

nab Ensuite, et retirez-le en même temps

var empty_form = $('#empty-vehicle-form').remove().html(); 

l'avantage de cette solutio n est que vos autres scripts JS peuvent le prétraiter avant de l'extraire du DOM. escapejs crée également de plus grands fichiers avec tous ces caractères d'échappement.

Questions connexes