【问题标题】:Default boolean to something that isn't falsey in Django template默认布尔值是 Django 模板中不虚假的东西
【发布时间】:2014-03-23 13:14:46
【问题描述】:

我正在使用 Django 模板,我想检查布尔值,如果为真则打印“粗体”,如果为假,则打印“普通”。如果该值为空白或未定义,我想将其视为 True。这是我目前使用的:

{{ something.boolean_val|yesno:"bold,plain,bold" }}

但是,当 something.boolean 未定义时,它会将其视为 False,而不是 None。我尝试添加一个|default_if_none 过滤器,但什么也没做。当我尝试|default 时,它也更改了 False 值。

深入研究文档,似乎未定义的变量默认设置为 '',它被视为 False。在这种特殊情况下,我只想将未定义的变量视为 True(None 也可以),所以我不想摆弄TEMPLATE_STRING_IF_INVALID

有没有办法让它将未定义的变量视为 True?或者,有什么方法可以区分 '' 和 False?

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    我不认为它是一个过滤器,但在模板语言逻辑中,您可以使用 '==',它等同于 python 中的 '===' 或 'is' 并且不匹配 None 或 '' 到 False使用“不”的方式。

    {% if something.boolean_val == False %}plain{% else %}bold{% endif %}
    

    【讨论】:

    • 我对@9​​87654322@s 做了一些改动,但我一定没有使用这个特定的设置。没有意识到== 等于===,这可能就是原因。无论如何,这似乎工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2014-03-23
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多