模板与编码HTML

Ala*_*eid 4 html python templates

我有一个web应用程序,包含一些html表单,用于维护一些表(SQlite,使用CherryPy来处理Web服务器的东西).首先,我完全采用"Python方式",并通过生成html字符串.代码,具有公共页眉,页脚等,在单独的模块中定义为函数.

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

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

虽然有些缺点是:{{}}分隔符在设计时在浏览器中查看时可见.相关的.css和.js文件必须在同一文件夹中才能在设计时在浏览器中查看效果.数据,变量,列表等必须在高级中准备,并且要么全局声明,要么作为参数传递给render()函数.

那么 - 什么时候使用'硬编码'HTML,何时使用模板?我不确定最好的方法,所以我很想听听其他开发者的意见.

TIA,艾伦

mig*_*jek 5

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

使用模板有很多很多的冒险,比如

  • 保持代码清洁.将"逻辑"(控制器)代码与"视图"分开是非常重要的,相信我处理混合HTML/CSS/JS输出的项目真的很难.
  • 将HTML保存在单独的文件中不需要您修改代码本身.例如,放入控制器代码(python代码)可能需要在每个"字符"之前加上斜杠.
  • 你可以让你的webdesigner学习模板语法的基础知识,这样他就可以帮助你,而不会破坏你的逻辑工作(当没有给定语言经验的人修改某些东西时这是很常见的)

事实上,还有更多的冒险,但这些对我来说最重要.

disadventage是,你必须将参数传递给渲染功能......这并不需要太多的工作,相信我:)无论如何它比坚持认为混合逻辑与视图中的任何项目要容易得多.

一般来说你应该看看> MVC的利弊问题<: 什么是MVC,它的优点是什么?


ʇsә*_*ɹoɈ 4

解决静态文件问题的最简单方法是在 html 中引用它们时使用相对路径。例如:<img src="static/image.jpg" />

如果您愿意投入更多的工作,您可以通过编写一个迷你服务器来显示模板来解决您提到的所有设计时问题。

  1. 维护一个充满简单数据结构的文件,其中包含所有模板的示例值。
  2. 使用像Werkzeug这样的微框架在本地计算机上提供 http 服务。
  3. 编写一个根请求处理程序,扫描您的数据结构列表或模板目录,以生成一个包含所有模板链接的索引页面。
  4. 为非根请求编写辅助请求处理程序,该处理程序使用同名的数据结构呈现所请求的模板。

你可以在几个小时内编写这个工具,并且它使模板设计变得非常方便。Werkzeug 的内置 wsgi 服务器的一个很好的功能是,当它检测到文件已更改时,它可以自动重新加载自身。您可以在全天编辑模板并单击索引页面上的链接时让迷你服务器保持运行。