1

我想将一个值传递给一个include标记,该标记是传入的变量的 OPOSITE。

这是我尝试过的(基本上):

{% with s_options as not disp %}
    {% include "e.html" with show_options=s_options only %}
{% endwith %}

有什么办法可以做我想做的事吗?

4

2 回答 2

5

不确定这是否是最好的解决方案,但我刚刚制作了一个新过滤器:

from django import template

register = template.Library()


@register.filter(name="not_value")
def not_value(true_value):
    return not true_value

然后做了:

{% load not_value %}
{% with s_options=disp|not_value %}  {# WILL NOT WORK WITH "as" #}
    {% include "e.html" with show_options=s_options only %}
{% endwith %}

请注意,这可能也可以正常工作(尽管我没有尝试过):

{% include "e.html" with show_options=s_options|not_value only %}
于 2013-07-28T19:03:53.587 回答
5

这有点像使用内置过滤器yesno,但它有效:

{% with reversed_value=original_value|yesno:',True' %}
    {# Do something #}
{% endwith %}

注意前面的逗号'True'。它的工作方式是,yesno如果原始值为 ,它将返回一个空字符串True,如果您对其进行任何布尔运算,它将评估为 False 。

于 2015-05-06T11:22:03.737 回答