2010-08-10 49 views
7

我有一个标签,看起来像这样:如何过滤模板标签?

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

刚刚呈现一个空的形式。但是现在我想将其输出传递给escapejs过滤器,以便我可以在JavaScript变量中使用它。我怎样才能做到这一点?

回答

14

很多标签支持as variablename - 也就是简单的把as variablename放在标签的末尾,然后把标签的输出放在变量中而不是显示出来。

{% partial %}标签可能支持。下面是一个例子,如果这样做:

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

如果有问题的标签是"Partial tag" snippet然后它会显示它不支持这一点。但它可能会被重写来支持它。

您可以使用“Capture template output as a variable”片断,然后将过滤器应用于捕获的内容,就像这样:

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

它是支持变量命名的部分标记片段的修改版本。 http://djangosnippets.org/snippets/2104/我认为'captureas' sol'n应该可以工作。 – mpen 2010-08-10 17:00:58

+0

用于自定义标签captureas – 2011-07-27 08:43:53

1

另一种解决方案,以使数据进入一个JS变量:

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

然后将其取出并同时将其删除

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

此解决方案的优点n是您的其他JS脚本可以在将它从DOM中取出之前对其进行预处理。 escapejs也创建更大的文件大小与所有这些转义字符。