我有一个网络应用程序,其中包含一些用于维护一些表格的 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/