【发布时间】:2022-01-03 08:34:28
【问题描述】:
我正在处理一个 Django 模板,该模板接受一个具有多个属性的对象,并根据这些属性添加不同的标签。例如,如果object.bold == True 添加<b></b> 标签,如果object.strikethrough == True 添加<strike></strike> 标签。我看过其他一些闻起来建议嵌套 if 的帖子,例如:
{% for object in objects %}
{% if object.bold == True %}
{% if object.strikethrough == True %}
<b><strike>{{object.name}}</strike></b>
{% else %}
<b>{{object.name}}</b>
{% endif %}
{% else %}
{% if object.strikethrough==True %}
<strike>{{object.name}}</strike>
{% else %}
{{object.name}}
{% endif %}
{% endif %}
{% endfor %}
这段代码伤害了我。我还看到了一些仅在if 语句中包装开始标签的奇怪逻辑。同样,引入控制台错误很痛苦。
有没有更好、更简洁的方法可以在不嵌套 if 的情况下实现此结果?我倾向于制作一个自定义 Django 标签,但这对于我真正希望可以更简单的东西来说似乎有点过分了。
【问题讨论】: