2011-11-16 72 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,我认为这有点过时,但是会给你一个项目组织的很好的见解。

相关问题