如何将 StringTemplate 引擎集成到 CherryPy Web 服务器中
Posted
技术标签:
【中文标题】如何将 StringTemplate 引擎集成到 CherryPy Web 服务器中【英文标题】:How to integrate the StringTemplate engine into the CherryPy web server 【发布时间】:2010-09-27 14:50:32 【问题描述】:我喜欢 StringTemplate 引擎,我喜欢 CherryPy Web 服务器,而且我知道它们可以集成。
谁做的?怎么样?
编辑:TurboGears 框架采用 CherryPy Web 服务器并捆绑其他相关组件,例如模板引擎、数据访问工具、javascript 工具包等。我对 MochiKit 感兴趣,需要 CherryPy,但我不想要任何其他组件模板引擎比 StringTemplate (架构很关键——我不想要另一个损坏/坏的模板引擎)。
因此,通过解决如何将 StringTemplate 与 TurboGears 集成来回答这个问题是可以接受的。
通过解决如何在 Google App Engine 中使用 CherryPy 和 StringTemplate 来回答这个问题也是可以接受的。
谢谢。
【问题讨论】:
不知道确切的答案,但我建议您看看 TurboGears 框架。它集成了cherrypy和kid模板引擎。docs.turbogears.org/1.0/GettingStarted/BigPicture 【参考方案1】:根据两者的教程,它看起来非常简单:
导入字符串模板 进口樱桃 类 HelloWorld(对象): 定义索引(自我): 你好 = stringtemplate.StringTemplate("你好,$name$") 你好[“名称”] =“世界” 返回str(你好) index.exposed = 真 cherrypy.quickstart(HelloWorld())您可能希望 CherryPy 函数在磁盘上的某个位置找到 StringTemplate,但总体思路是这样的。
Django 在概念上是相似的:url 映射到 python 函数,python 函数通常构建一个上下文字典,使用该上下文对象渲染一个模板,然后返回结果。
【讨论】:
【参考方案2】:罗伯,
人们选择工具是有原因的。 StringTemplate 在 Python 中并不是很流行,有一些模板引擎得到了更好的支持并且拥有更广泛的受众。如果不喜欢 Kid,还有 Django 的模板、Jinja、Cheetah 等。也许您可以在其中一个中找到您非常喜欢的 StringTemplate 功能,并从此过上幸福的生活。
【讨论】:
人们因选择糟糕的 X 而臭名昭著,包括模板引擎,所以我对人气竞赛不感兴趣。我想要一个好的模板引擎,这意味着强制执行类似 MVC 的分离,它只有一个选项:StringTemplate。没有人打扰过。 +1 取消投票。 StringTemplate 有笨拙的 if-then 语句,根本没有 for 循环......并且没有对变量的属性访问......如果它们算作程序逻辑,那肯定有点苛刻? Eli:您提到“选择工具是有原因的”。然而,我从你的论点中推断出的原因似乎是由 Rob 没有分享的担忧所引导的。 StringTemplate 的设计师 Terence Parr 将文本处理作为他毕生的工作(字面意思)。我鼓励您阅读解释 ST 哲学的论文:“用于生成结构化文本的函数式语言”(cs.usfca.edu/~parrt/papers/ST.pdf)和“执行严格的模型-视图分离”在模板引擎中”(cs.usfca.edu/~parrt/papers/mvc.templates.pdf) 就像 Python 的空白一样,我曾经认为他的想法很疯狂...... Nikhil:见antlr.org/wiki/display/ST/Five+minute+Introduction。 ST 允许引用模板命名空间中对象的属性,例如以上是关于如何将 StringTemplate 引擎集成到 CherryPy Web 服务器中的主要内容,如果未能解决你的问题,请参考以下文章