python - 模板与编码的 HTML

标签 python html templates

我有一个网络应用程序,其中包含一些用于维护一些表格的 html 表单(SQlite,以及用于网络服务器内容的 CherryPy)。首先,我完全是“Python 方式”,并通过生成 html 字符串。代码,具有共同的页眉、页脚等。定义为单独模块中的函数。

我也喜欢模板的想法,所以我尝试了 Jinja2,我发现它对开发人员非常友好。一开始我认为模板是可行的方法,但那时页面很简单。一旦引入了 .css 和 .js 文件(不一定与 .html 文件位于同一文件夹中),并且引入了越来越多的 {{...}} 变量和 {%...%} 命令,事情在设计时开始变得困惑,尽管它们在运行时看起来很棒。当我需要在 或 部分中添加额外的 javascript 时,事情变得更加困难。

据我所知,使用模板的主要优点是: 页面的非动态元素在设计过程中可以很容易地在浏览器中查看。 除了 {} 占位符,html 与 python 代码保持分离。 如果您的公司有网页设计师,他们仍然可以在不懂 Python 的情况下进行设计。

虽然一些缺点是: {{}} 分隔符在设计时在浏览器中查看时可见 关联的 .css 和 .js 文件必须位于同一文件夹中才能在设计时在浏览器中查看效果。 数据、变量、列表等必须预先准备好并全局声明或作为参数传递给 render() 函数。

那么 - 何时使用“硬编码”HTML,何时使用模板?我不确定最好的方法,所以我很想听听其他开发人员的意见。

TIA,艾伦

最佳答案

虽然我不是 Python 开发人员,但我会在这里回答 - 我相信使用模板的想法对于 PHP 和 Python 来说很常见。

使用模板有很多优点,例如:

  • 保持代码整洁。将“逻辑”( Controller )代码与表示( View )分开非常重要。处理混合 HTML/CSS/JS/Python 的项目真的很难。
  • 将 HTML 保存在单独的文件中不需要您修改代码本身。例如,放置在 Controller 代码(Python 代码)中可能需要您在每个 "字符前放置一个斜线。
  • 您可以要求您的网页设计师学习模板语法的基础知识,这样他就可以在不破坏您在 Controller 代码上的工作的情况下为您提供很多帮助(当没有给定语言经验的人修改某些内容时,这很常见)

其实还有很多优点,但对我来说最重要的是这些。

唯一的缺点是您必须将参数传递给渲染函数……这不需要太多工作。无论如何,这比维护任何混合 Controller 代码和 View 代码的项目要容易得多。

一般来说,你应该看看 >MVC 的利弊问题<: What is MVC and what are the advantages of it?

关于python - 模板与编码的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3026731/

相关文章:

c++ - 如何将构造函数(可变参数)作为模板参数传递?

python - 将 Python 虚拟环境与 Terminator 结合使用

javascript - 带有angularjs的css中奇怪的渐变行为

javascript - 使用 Window.resize 和媒体查询来移动一个 div 元素

c++ - CRTP 和模板化表达式

c++ - 具有包扩展的可变参数函数模板不在最后一个参数中

Python/PyQt/Qt QMenu QAction 语法

Python 线程 - 参数数量错误

python - 将行格式化为向量,如何reduceByKey (list(n_1, m_1)....(n_k, m_k)) 到 (n_1...n_k) (m_1...m_k))

jQuery点击改变背景颜色