Ano*_*non 53 python django templates ternary-operator
我想知道是否有一个可以在Django模板中使用的三元运算符(条件?true-value:false-value).我看到有一个python(真值,如果条件其他假值)但我不确定如何在Django模板中使用它来显示由其中一个值给出的html.有任何想法吗?
小智 82
您可以使用yesno过滤器:
{{ value|yesno:"yeah,no,maybe" }}
Run Code Online (Sandbox Code Playgroud)
https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#yesno
Dan*_*man 32
为什么在模板中需要三元运算符?{% if %}而且{% else %}就是你所需要的.
或者您可以尝试firstof标记:
{% firstof var1 var2 var3 %}
Run Code Online (Sandbox Code Playgroud)
它输出var1,var2或var3中的第一个,其值为True值.
pti*_*tim 18
仅仅因为它们还没有被提及:内置的模板标签default,default_if_none在简单的情况下可能很有用:
默认
如果value的计算结果为False,则使用给定的默认值.否则,使用该值.
例如:
{{ value|default:"nothing" }}如果value为""(空字符串),则输出将为空.
default_if_none
如果(且仅当)值为None,则使用给定的默认值.否则,使用>值.
请注意,如果给出空字符串,则不会使用默认值.如果要为空字符串回退,请使用>默认过滤器.
例如:
{{ value|default_if_none:"nothing" }}如果value为None,则输出将为字符串"nothing".
https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#default
我刚刚为Django实现了三元运算符作为标记,请参阅https://github.com/alexei/django-template-extensions 您可以将其用作:
{% ?: exp1 exp2 exp3 %}
{% ?: exp1 exp2 %}
Run Code Online (Sandbox Code Playgroud)
要么:
{% iif exp1 exp2 exp3 %}
{% iif exp1 exp2 %}
Run Code Online (Sandbox Code Playgroud)
我发现它比yesno滤镜更有意义,即使它真的不是Pythonic.
| 归档时间: |
|
| 查看次数: |
21945 次 |
| 最近记录: |