【问题标题】:django templates: loop through list of classes/stringsdjango模板:遍历类/字符串列表
【发布时间】:2013-04-08 04:12:21
【问题描述】:

有没有类似的东西:

{% for class in "red", "green", "blue" %}
   <div class="{{ class }}"></div>
{% endfor %}

在 django 模板中?

【问题讨论】:

  • 最好将数组或列表从视图发送到模板。然后你可以用这种方式做任何你想做的事情。
  • 我认为这不是一个好习惯。视图上不应包含任何“显示逻辑”。这种东西应该只在模板中,或者如果在模板标签中不可用。

标签: django templates


【解决方案1】:

嗯,不是直接的,但您可以使用循环与动态列表结合:

{% for cnt in "123"|make_list %}
    <div class="{% cycle 'red' 'green' 'blue' %}"></div>
{% endfor %}

...另一种选择是为您的 css_classes 赋予更通用的名称,例如:color_1、color_2、color_3,然后:

{% for cnt in "123"|make_list %}
    <div class="color_{{ cnt }}"></div>
{% endfor %}

这会将您的 css 类与固定颜色分离,如果您稍后在 css 上更改颜色,这可能是个好主意。

----更新---

好的,阅读 nickromano 发布的链接上的答案,我现在意识到我错了。有一种使用 expr 在模板上声明真实列表对象的方法。而且 split 方法比 make_list + cycle 更好:-)

【讨论】:

  • 不错。我猜这|make_list 并不是真正需要的。我选择了第一个建议的解决方案,而不是“123”,而是选择了课程的第一个字母。我现在很满意。谢谢。
  • 很高兴它对您有所帮助。但是您还应该查看其他链接。拆分方法的答案可能对未来有用。下次我一定会记住这一点:-)
猜你喜欢
  • 2013-06-22
  • 2010-10-21
  • 2016-08-31
  • 2017-12-14
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多