2011-11-16 74 views
6

我想我有一個關於更好的代碼組織的簡單問題。在一個視圖中的多個Django應用程序

假設我有多個應用程序也實現了這些應用程序應該如何表示層表示。

我想了解如何組織代碼,如果我需要在一個頁面上呈現多個應用程序而不使用框架當然?快速示例:假設我有兩個應用程序(app1和app2)都暗示了其相應的模型和視圖。現在我需要我的索引頁面來包含這兩個視圖的呈現。我怎樣才能實現仍然利用應用程序視圖而不是直接轉到他們的模型的通用視圖? 我寧願我的應用程序仍然控制其視圖。

感謝

回答

5

我想你可以使用render_to_string快捷 因此,在應用程序的意見,你就把:

render_to_string(somestuff) # instead of render() or render_to_responce() 

,然後在索引視圖是這樣的:

render(request, 'index.html', {'block1': view1(request), 'block2': view2(request)}) 

PS:另外在我寫這篇文章之後,它看起來不太好(在我的腦海裏看起來好多了:))。

+0

先生們,我很抱歉拖延謝謝你巴拉茲和Pill的堅實建議。雖然我認爲兩者都很穩定,但我會和Pill一起回答,因爲它似乎足以滿足我的需求。 – user1039384

+0

此外,爲了給你額外的想法,爲什麼我比以前的回答更喜歡這個問題: 雖然主要用法很簡單,只需寫一個CSS來定義block1和block2的位置,然後在模板中使用實際的{{block1} }和{{block2}},另一個值是應用程序類也可以使用該方法來呈現自己的模板,如果需要的話,它只顯示該應用程序的信息。因此,邏輯將與每個想要決定展示應用程序的表示形式相關聯,並且應用程序將負責實際表示其數據。再次感謝 – user1039384

3

好問題,我告訴你我是怎麼做到的。

我使用了(應用特定的)自定義模板標籤。這些模板標籤將更多東西放入上下文中,您可以在模板中使用它。您可以從docs瞭解更多關於自定義模板標籤的信息。

有一本好書Practical django Projects 2nd edition,我認爲這有點過時,但是會給你一個項目組織的很好的見解。

相關問題