我寻找模板引擎与特别关注

2024-09-30 22:19:24 发布

您现在位置:Python中文网/ 问答频道 /正文

请给我推荐一个HTML模板引擎(任何脚本语言),它实现了下面描述的特殊概念。你知道吗

所有标记都处于活动状态。在调用模板之前不应该准备数据,但是模板本身从模型中获取了数据。例如

你知道吗{当前用户名}将替换为当前登录用户的名称,所以我不需要在调用模板之前准备数据。你知道吗

但我也可以指定一些“自定义”数据方法。例如,如果我必须制作photogallery,并且只需要显示一大块照片,我可以使用{photolistpart.thumb.url}并定义了检索PhotosListPart的特殊方法,允许模板自动调用,异步获取数据。你知道吗

你知道有哪个模板引擎/框架支持这种模板化方法吗?你知道吗


Tags: 数据方法用户标记模型引擎名称模板
2条回答

Pull视图是从控制器中拉出数据的视图(控制器反过来调用模型来查找数据)。你知道吗

如果您严格遵守MVC模式[1],那么就不会使用任何类型的pull视图。你知道吗

但是没有一个[2]的模板引擎能够代表MVC,因为它们允许模板中的逻辑(if/foreach/function调用等)。你知道吗

任何模板引擎都不会有预先编写的代码来假设存在任何数据,但是几乎所有的模板引擎都允许您传递一个庞大的数据数组,其中包含页面上所需的所有内容。你知道吗

如果您需要一个模板引擎将数据预先填充到变量中,那不是一个模板引擎,而是一个完整的应用程序,它包含与数据库或模型通信的逻辑,这使它远离了模板引擎的概念。你知道吗

[1]当我们谈论模板化引擎时,尊重MVC意味着使用if仅检查变量是否设置,for/foreach循环不应存在,通过将模板应用于集合对象来完成对集合/项目列表的范围,这一点和其他关注点如下所示:http://bit.ly/Jc3f0Z

[2]除了Java中的StringTemplate之外,C&Python;Moustache在很多语言中,包括JS/Node.js/Java/PHP/Python/Ruby. 你知道吗

编辑

使用视图类来准备数据,使用模板文件来输出数据,对我来说总是像一堆乱七八糟的东西,因为名称变得混乱(视图是类+模板,模板是文件)。你知道吗

这就是为什么我将预处理类命名为“Renderers”,将模板文件命名为“Templates”,这样Renderers+Templates=Views。作为一个名字和一种哲学,这对我来说更有意义。你知道吗

我可以在渲染器中使用money\u format/number\u format/html\u escape等,然后将已经渲染的数据输出到模板中。因此,我不会将渲染/查看操作与控制器混合使用。它们都在渲染器中完成。你知道吗

是的,我知道什么是MVC专用的设计模式,但我无法想象你想要如何从中实现url路由和调用模板。例如,您收到用户的请求,如果删除视图,则需要显示一些数据所有业务逻辑都应该位于模型、模板或其他位置(如helpers),因此结果是MVC,但视图被涂抹在三个或更多位置。但是如果您真的想这样做,您可以尝试使用Mako模板http://www.makotemplates.org/,您可以根据需要直接在模板中编写python代码

相关问题 更多 >