【问题标题】:Django Template String Concatenation based on number of non-empty variables基于非空变量数量的Django模板字符串连接
【发布时间】:2019-05-23 04:36:12
【问题描述】:

我有两个要在 Django 模板上显示的字符串变量。如果变量 a 为空,则不显示它。与 b 类似。但是如果 a 和 b 都是非空的,那么将两个字符串用 ' & ' 连接起来。

这是 Python 中的逻辑。

res = ''
if a != '':
    res = a

if b != '':
    if res == '':
        res = b
    else:
        res = res + ' & ' + b

print(res)

如何将这个逻辑写入 Django 模板?

【问题讨论】:

  • 恕我直言,您应该在视图而不是模板中编写此逻辑
  • 该代码也可以缩短为一行:res = ' & '.join(filter(None, [a, b]))
  • @ruddra 我会试试看。谢谢。

标签: python django django-templates


【解决方案1】:

你应该把这个逻辑写成@ruddra 的评论, 但如果你坚持使用 django 模板,你可以试试这个:

{% if a == ' ' %}
    {% if b == ' ' %}
        res = ''
    {% else %}
        res = {{b}}
    {% endif %}
{% else %}
    {% if b == ' ' %}
        res = {{a}}
    {% else %}
        res = {{a}} & {{b}}
    {% endif %}
{% endif %}

【讨论】:

    【解决方案2】:

    正如其他人所指出的,在 view 中而不是在 template 中编写它更容易。

    如果你真的想:

    {% if a != '' and b != '' %}
      {{ a }}&{{ b }}
    {% elif a != '' and b == '' %}
      {{ a }}
    {% elif a == '' and b != '' %}
      {{ b }}
    {% else %}
      {# You didn't mention #}
    {% endif %}
    

    【讨论】:

      【解决方案3】:
      res=''
      if a !='': 
           if b!='':
                res= a + '&' + b     
           else:
                print('b is empty')
      else:
           print('a is empty')
      
      print(res)
      

      如果 'res' 为空,则不打印任何内容

      【讨论】:

        猜你喜欢
        • 2023-03-24
        • 2012-03-07
        • 1970-01-01
        • 2010-12-08
        • 2012-09-30
        • 2011-05-13
        • 1970-01-01
        • 2011-10-02
        • 1970-01-01
        相关资源
        最近更新 更多