假设我有3个django应用程序,app Country,app Social和app Financial。
Country是一个“主导航”应用程序。它列出了“指数”视图中的所有国家,并在其“详细信息”视图中显示了每个国家的详细信息。
每个国家的详细信息包括社会细节(来自社交应用)和金融细节(来自金融应用)。
社会和金融都有一个详细的观点(每个国家)
有没有一种优雅的方法将这些子细节视图“插入”到各国提供的主细节视图中?因此,对于每个国家的详细信息页面,我会看到两个标签,显示该国的社会和财政细节。
发布于 2010-02-12 08:05:10
我为这个问题使用了2种常见的解决方案:
部分模板:
创建一个用于呈现"social“和"financial”的模板,该模板不需要视图中的内容,而不是它正在处理的对象(并使用对象函数或模板标记来呈现它)。然后,您可以很容易地将%包括%} it (并首先设置所需的变量)。
此部分视图不呈现完整的HTML页面,而只呈现单个DIV或其他您希望使用的HTML元素。如果您还需要一个“仅社交”页面,您可以创建一个页面来呈现标题,然后包含部分模板。您可以对部分模板使用像_template.html这样的约定,对常规模板使用template.html。
AJAX:
让您的“社会化”和“财务”视图意识到在XMLHTTPRequest (request.is_ajax())中被调用。如果是的话,它们只返回一个DIV元素,而不返回它周围的所有HTML。这样,您的母版页就可以在不使用它的情况下呈现,并动态添加该内容。
AJAX方法有几个优点:您不会将插件视图呈现在与整个页面相同的请求上,因此,如果您有许多这些插件视图,母版页将加载得更快,并且您可以让一个智能的javascript只选择需要的相关插件视图。
此外,您还可以使用普通视图生成模板中需要的数据(在部分模板方法中不能真正做到这一点)。
https://stackoverflow.com/questions/2249285
复制相似问题