gpt4 book ai didi

python - 我应该如何在我的模板之间共享代码 ("modules")?

转载 作者:行者123 更新时间:2023-12-01 06:14:25 25 4
gpt4 key购买 nike

如果我的 Pylons 网站中有两个 Controller ,分别提供两个不同的模板文件,那么在每个模板上显示相同 HTML 片段的最佳方式是什么?

例如,假设我有一个博客。首页将显示最近条目的列表,每个条目都有一个“永久链接”,链接到仅显示该条目的页面。在每个页面上,我想显示“最新条目” - 最新 5 篇博客文章的列表。

模板文件不同。 Controller 不同。如何显示“最新帖子模块”?

我应该有这样的东西:

from blog.model import posts

class BlogController(BaseController):

def index(self):
c.latestPosts = posts.get_latest()

return render('home.html')

class OtherController(BaseController):

def index(self):
c.latestPosts = posts.get_latest()

return render('otherpage.html')

c.latestPosts 将是模板呈现的链接列表。我看到的问题是,我必须在两个单独的模板文件上呈现 HTML。如果我想更改 HTML,则意味着在两个地方更改它...

我正在尝试想出一种巧妙的方法来做到这一点,但我已经没有主意了。你会怎么做?

最佳答案

能够共享常见的 HTML 片段,如页眉、页脚、页面的“登录”区域、侧边栏等,是一个非常常见的要求。模板引擎通常为此提供方法。

如果您使用 Mako,以下是您可以使用的两种主要机制:

包括

查看 <%include>标签。在页面模板中,您指定放置各种可重用位的位置。您可以从头开始构建页面,用您拥有的可重用组件组装它。

Mako 文档中的示例:

<%include file="header.html"/>

hello world

<%include file="footer.html"/>

继承

查看 <%inherit>标签。这与 Python 等编程语言中的继承类似。在基本模板中,您设置页面的骨架。在页面模板中,您可以自定义和扩展基本模板的某些部分。

简单示例,base.mako:

<html>
<head></head>
<body>
${self.header()}

${self.body()}

</body>
</html>

<%def name="header()">

This is the common header all pages will get unless
they override this.

</%def>

somepage.mako:

<%inherit file="/base.mako"/>

This content will go into body of base.

模板引擎通常有许多漂亮的功能,我鼓励您充分了解它们!

关于python - 我应该如何在我的模板之间共享代码 ("modules")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4075183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com