【问题标题】:Google App Engine(Python) - site fragments - composite viewGoogle App Engine(Python) - 网站片段 - 复合视图
【发布时间】:2012-05-09 10:34:20
【问题描述】:

有没有一种方法可以构建网站的三个或四个部分(三个或四个 html 模板),然后在 GAE python 中渲染其中的一部分或全部?我知道我可以加载和呈现一个特定的 html django 模板,但我想在不同的文件中为网站的不同部分构建模板,然后根据情况将它们组合在一起。

一个很好的例子是,我希望在我的大多数 Web 应用程序页面中使用几乎相同的菜单、页眉、页脚,但我想切换内容的特定部分。 所以我想有一个文件和模板来处理让我们说类和另一个处理学生,所以网站(main.html)的总体外观保持不变,但我显示和处理有关学生或信息的方式类是完全不同的。我基本上想将一堆特定于页面的 html 植入通用模板中。 感谢您对此的任何帮助。 :)

我不确定我正在寻找的正确技术术语是什么(我尝试搜索)。 => 我认为他们在 Zend 框架中将其称为复合视图或站点片段。

【问题讨论】:

    标签: python html django google-app-engine


    【解决方案1】:

    您应该在 Django 中使用模板继承。先看看this tutorial

    EDIT 官方Django Book section on Template Inheritance 还展示了不同的“片段”,例如页脚或导航栏可以存储在不同的模板文件中,并通过包含和继承组合在一起。

    本网站展示了一个模板如何从另一个模板继承,例如当一个网站部分模板扩展一个基本布局模板时,使用代码,例如,

    {% extends "base.html" %}
    

    它还展示了如何使用模板包含,例如,将不同的部分添加到更大的模板中,例如拼图中的部分。例如,可以将导航片段添加到带有短语的布局文件中

    {% include "nav.html" %}
    

    正如@Nick Johnson 在 cmets 中所指出的:extends 更紧凑,可以不必使用多个文件片段。只有include 作为最后的手段,如果extends 失败了。

    编辑另见我对"How to cut large HTML file into multiple HTML files"的问题的回答

    【讨论】:

    • 嗨,这太棒了!这正是我所需要的,但还有一种方法可以一次“扩展”多个模板吗?
    • 是的@Arthur,继承可以分为多个层次。例如,想象一下,您将基本站点布局放在一个名为 base.html 的文件中。然后在两个部分模板中创建自定义布局,比如blog.htmlstore.html,每个模板都将扩展(继承自)基本布局。然后,反过来,您可以将post.html 扩展blog.htmlproduct.html 扩展store.html 等到任意数量的级别。
    • 我的意思是,我可以做类似的事情吗:=>uzzle.html =piece1.html +piece2.html ... + ...piece3.html,意思是取三个模板并插入它们在主模板的“洞”中
    • @ArthurWulfWhite,看看我在答案中的编辑......我添加了一个解释来涵盖模板扩展和包含的机制,希望这能完全回答你的问题:)
    • 在开始使用 include 之前,请仔细查看 extends。模板继承支持定义块,您的子模板可以填充内容。这比定义大量包含大量标记的模板要简洁很多
    猜你喜欢
    • 2012-11-28
    • 2013-09-14
    • 1970-01-01
    • 2013-12-25
    • 2013-08-25
    • 2012-06-19
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    相关资源
    最近更新 更多