【问题标题】:Python HTML template ternary operatorPython HTML 模板三元运算符
【发布时间】:2017-05-05 08:44:12
【问题描述】:

我遇到过不同的 python 三元运算符,例如:

a if b else 0

但是当我尝试将它包含在 Django HTML 模板中时它不起作用

{% a if b else 0 %}

这是我将要使用但不起作用的确切代码:

{% 'error' if form.title.errors else '' %}

{% form.title.errors ? 'error' : '' %}

我不喜欢做平常的事

{% if form.title.errors %}error{% endif %}

因为在我看来它看起来很笨重,特别是如果我添加一个 else 语句。

有什么建议吗?还是我应该坚持下去?

【问题讨论】:

    标签: python html django if-statement ternary-operator


    【解决方案1】:

    在 Django 中,模板标签只支持{% if %}{% else %}{% endif %}。如果你不想使用:

    {% if form.title.errors %}error{% endif %}
    

    你可以试试:

    {{ error|default:'' }}
    

    django 模板中的测试如下:

    ...from django.template import Context, Template
    ...from django.conf import settings
    ...settings.configure()
    ...t = Template("My name is: {{ name|default:'anonymous' }} ")
    

    如果默认:

    ...t.render(Context({}))
    

    它会返回:

    'My name is anonymous '
    

    如果有名字:

    ...t.render(Context({"name": "John"}))
    

    结果:

    'My name is John '
    

    阅读更多:https://docs.djangoproject.com/en/1.9/ref/templates/

    【讨论】:

      【解决方案2】:

      您可以使用yesno 过滤器 (documentation) 或多或少地获得您想要的行为:

      {{ form.title.errors|yesno:"errors," }}
      

      【讨论】:

      • 太棒了!,试过了,但不知道你需要在末尾插入逗号
      猜你喜欢
      • 2011-03-07
      • 2020-03-28
      • 2019-02-24
      • 2012-08-14
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多