2013-02-10 78 views
2

我是Django的新手,我想知道如何將HTML代碼片段與模型相關聯。Django模型的HTML代碼片段

我的HTML片段只是一個div。我想重新使用該分區(你可以認爲它像一個縮略圖)

情況是這樣的:在我的主頁我想告訴X對象,在我的搜索頁面我想表現出更多的對象。但代表是一樣的。

我可以在mainpage.html和searchpage.html中編寫將模型對象轉換爲div的所需方式,但我不確定重用該轉換的最佳方式是什麼?

我可以添加一個函數給我的模型,它返回一個HTML div,然後我可以從mainpage和searchpage模板調用它。但是,這將會使模型和表示相結合,我相信這不是一件好事。

如果我沒有弄錯inclusion_tag s是要走的路,但我應該在哪個文件中保留函數定義?

回答

3

正如你所說的,你不想在你的模型中使用html,它違背了MVC模式。

Models用於存儲數據。 Views用於選擇要呈現的數據,而Templates用於數據的實際呈現。 (請參閱有關django's interpretation of MVC的此說明)。

要回答你的問題,你需要一個模板(或者甚至是template tag)來表示你的模型,比如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變量。