如何过滤模板标签?

mpe*_*pen 8 django django-templates

我有一个看起来像这样的标签:

{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %}
Run Code Online (Sandbox Code Playgroud)

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

Jor*_*ter 15

许多标签支持as variablename- 也就是说,简单地放在as variablename标签的末尾,然后将该标签的输出放在变量中而不是显示.

{% partial %}标记可能支持该标记.这是一个例子,如果它:

{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form as myvar %}{{ myvar|escapejs }}
Run Code Online (Sandbox Code Playgroud)

如果相关标签是"部分代码"代码段,那么它似乎不支持此功能.但它可能会被重写以支持它.

您可以使用" 捕获模板输出作为变量 "片段,然后将过滤器应用于捕获的内容,如下所示:

{% captureas myvar %}{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form  %}{% endcaptureas %}{{ myvar|escapejs }}
Run Code Online (Sandbox Code Playgroud)


Tre*_*ton 3

使用内置模板标签也可以在没有任何外部依赖项的情况下将过滤器应用于模板filter标签的输出。从文档中:

[此模板标签]通过一个或多个过滤器过滤块的内容。可以使用管道指定多个过滤器,并且过滤器可以有参数,就像变量语法一样。

原始问题中的示例将这样写:

{% filter escapejs %}
{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %}
{% endfilter %}
Run Code Online (Sandbox Code Playgroud)