2

我是 Django 新手,我正在尝试找出如何将 HTML 片段与模型相关联。

我的 HTML 片段只是一个 div。我想重用那个 div(你可以把它想象成一个缩略图)

情况是这样的:在我的主页中,我想显示 x 个对象,而在我的搜索页面中,我想显示更多对象。但是表示是一样的。

我可以在 mainpage.html 和 searchpage.html 中编写将模型对象转换为 div 的所需方法,但我不确定重用该转换的最佳方法是什么?

我可以向我的模型添加一个返回 HTML div 的函数,然后我可以从主页和搜索页面模板调用它。但这会将模型和表示结合起来,我认为这不是一件好事。

如果我没记错的话, inclusion_tag是要走的路,但是我应该在哪个文件中保留函数定义?

4

1 回答 1

3

正如您正确地说的那样,您不希望在模型中使用 html,这违反了 MVC 模式。

模型用于存储数据。视图用于选择要呈现的数据,而模板用于实际呈现数据。(请参阅有关django 对 MVC 的解释的注释)。

要回答您的问题,您需要一个模板(甚至是模板标签)来表示您的模型,例如model_block.html. 就像是

{% if obj %}
    <div id=obj.id>
        {{ obj.name }}
    </div>
{% endif %}

然后将您的模板包含在您的mainpage.html喜欢中

{% for obj in object_list %}
    {% include 'model_block.html' %}
{% endfor %}

你可以在你的 中做同样的事情,从你的视图中searchpage.html传递一个不同的变量。object_list

于 2013-02-10T13:54:52.703 回答