django 在同一模板中为不同的 for 循环重用 html 块

use*_*366 1 html python django django-templates

我对给定的对象有三个条件,1. to start2. started3. finished。我过滤视图本身中的对象并将三个变量发送到模板 - tostart_objectsstarted_objectsfinished_objects

现在我循环遍历 html 模板中的三个 for 循环,如下所示:

{% for obj in tostart_objects %}
// chunk of html template to display all the object 
{% endfor %}

{% for obj in started_objects %}
// similar chunk of html template as above
{% endfor %}

{% for obj in finished_objects %}
// similar chunk of html template as above
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我可以不在三个不同的地方重用它们而不是放置相同的代码块吗?如何才能做到这一点?请让我知道,谢谢!

Dan*_*man 5

这样做的一种方法是将 HTML 块放在一个单独的模板文件中,并使用 {% include %}将其包含在每个循环中。在此基础上,您可以将整个循环定义为将对象列表作为参数的包含模板标记。

或者,您可以连接视图中的三个列表,然后循环遍历结果。

  • 这当然是一种解决方法,但 Django 模板系统中仍然缺少一个功能。如果我只在单个模板中使用它,为什么还要依赖另一个文件?为什么我不能一次看到代码,最好是在第一次使用的地方? (3认同)