2

假设我有 3 个 django 应用程序,应用程序Country,应用程序Social和应用程序Financial

Country 是一个“主导航”应用程序。它在“索引”视图中列出所有国家,并在其“详细信息”视图中显示每个国家的详细信息。

每个国家/地区的详细信息包括其社交详细信息(来自社交应用程序)和财务详细信息(来自财务应用程序)。

社会和财​​务都有详细视图(针对每个国家/地区)

有没有一种优雅的方式将这些子细节视图“插入”到国家提供的主细节视图中?因此,对于每个国家/地区详细信息页面,我会看到 2 个选项卡显示该国家/地区的社会和财务详细信息。

4

1 回答 1

2

我用于此问题的 2 个常见解决方案:

部分模板:
创建一个用于渲染“社交”和“财务”的模板,除了它正在处理的对象之外,它不需要视图中的东西(并使用对象函数或模板标签来渲染它)。然后您可以轻松地 {% include %} 它(并首先设置所需的变量)。
此部分视图不会呈现完整的 HTML 页面,而只会呈现单个 DIV 或您希望使用的其他一些 HTML 元素。如果您还需要一个“仅限社交”页面,您可以创建一个呈现标题然后包含部分模板的页面。您可以将 _template.html 之类的约定用于部分模板,将 template.html 用于常规模板。

AJAX:
让您的“社交”和“财务”视图意识到在 XMLHTTPRequest (request.is_ajax()) 中被调用。如果是,它们只返回一个 DIV 元素,而没有围绕它的所有 HTML。这样,您的母版页可以在没有它的情况下呈现,并即时添加该内容。
AJAX 方式有几个优点:您不会在与整个页面相同的请求上呈现插件视图,因此如果您有许多这些插件视图,则母版页加载速度会更快,并且您可以只选择智能 javascript要请求的相关插件视图。
此外,您可以使用普通视图在模板中生成您需要的数据(在 Partial Templates 方法中您实际上无法做到这一点)。

于 2010-02-12T08:05:10.247 回答