如何基于模型对象制作可重用的HTML块

时间:2014-10-01 07:27:41

标签: django django-templates

假设我有一个标题,价格,描述和图像字段的简单模型。我想要3个html输出/块,我可以为这个模型的每个对象重用。对于增加的复杂性,其中2个输出将合并为第3个。所以,这是模板中这3个输出的样子。

output_image

<span class="output_image"><img src="{{ object.image.url }}" alt="{{ object.title}}></span>

output_info

<ul class="output_info">
    <li>{{ object.title }}</li>
    <li>Price: {{ object.price }}</li>
    <li>{{ object.description }}</li>
</ul>

output_all(包装前2个)

<div class="output_all">
    <span class="output_image">...</span>
    <ul class="output_info">...</ul>
</div>

我可能想在搜索页面上使用output_image,例如在列表和高级搜索上使用output_all。因此我只想写一次这个输出,并重用它。实现这一目标的最佳方法是什么?

最初我想将方法​​/属性添加到模型类,它将返回格式化的html。这很有效,在我的模板中,我可以打电话给{{ object.output_all }}。输出像这样的html是不好的做法吗?

我也简要介绍了其他方法。包含标签似乎有效,但我只测试了一个完整的&#39; output_all case的版本(即没有&#39;嵌套&#39; output_all中的其他2个输出标签)。这是正确的方法,是否可以“嵌套”?标签?

1 个答案:

答案 0 :(得分:0)

我会为此使用包含标签。在模板中保持它所属的表示逻辑。