2010-08-10 5 views
7

Tengo una etiqueta que tiene este aspecto:Cómo filtrar una etiqueta de plantilla?

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

Lo cual hace que una forma vacía. Pero ahora quiero pasar el resultado de eso al filtro escapejs para poder usarlo en una variable de JavaScript. ¿Cómo puedo hacer eso?

Respuesta

14

Muchas etiquetas admiten as variablename - es decir, simple ponga as variablename al final de la etiqueta y luego la salida de esa etiqueta se coloca en la variable en lugar de mostrarse.

Esta etiqueta {% partial %} puede soportar eso. He aquí un ejemplo, si lo hace:

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

Si la etiqueta en cuestión es el "Partial tag" snippet entonces parece que no soporta esto. Pero probablemente podría reescribirse para apoyarlo.

Se podría utilizar el "Capture template output as a variable" fragmento, y luego aplicar el filtro al contenido capturado, así:

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

Es una versión modificada del fragmento de etiqueta parcial que admite nombres variables. http://djangosnippets.org/snippets/2104/ Creo que la solución 'captureas' debería funcionar. – mpen

+0

+1 para capturas de etiquetas personalizadas –

1

Otra solución para obtener los datos en una variable JS:

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

Entonces atrapar a él y eliminarlo al mismo tiempo

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

la ventaja de este solutio n es que sus otras secuencias de comandos JS pueden preprocesarlo antes de extraerlo del DOM. escapejs también crea tamaños de archivo más grandes con todos esos caracteres de escape.

Cuestiones relacionadas