将Python CGI用于大型HTML文件

时间:2014-05-14 12:03:39

标签: python html web cgi

我有一个名为exercise.html的大html文件,我需要通过Python CGI生成一个som的东西。 我想问你打印这个HTML的最佳方法是什么。

我知道使用格式方法%s,%i等打印方法是可能的:

print '''<html>
<head><title>My first Python CGI app</title></head>
<body> 
<p>Hello, 'world'!</p>
.
.
<div>%s</div>
.
.
</body>
</html>''' % generated_text

但是这个HTML真的很大,这只是一个解决方案吗?

2 个答案:

答案 0 :(得分:1)

您应该考虑使用像Jinja2这样的模板语言。

这是一个简单的例子,直接来自上面的链接:

>>> from jinja2 import Template
>>> template = Template('Hello {{ name }}!')
>>> template.render(name='John Doe')

通常,虽然您将模板保存在文件中,然后加载/处理它们:

from jinja2 import Environment, PackageLoader
# The env object below finds templates that are lcated in the `templates`
# directory of your `yourapplication` package.
env = Environment(loader=PackageLoader('yourapplication', 'templates'))
template = env.get_template('mytemplate.html')
print template.render(the='variables', go='here')

如上所示,模板允许您将variables放入模板中。将文本放在{{}}中会使其成为模板变量。渲染模板时,使用关键字参数传入变量值。例如,下面的模板有一个名称变量,我们通过template.render传递

  

这是我的{{name}}。

template.render(name='Jaime')

答案 1 :(得分:1)

另请考虑Python BottleSimpleTemplate Engine)。值得注意的是,bottle.py支持mako,jinja2和cheetah模板。

%表示python代码,{{var}}是替换变量

HTML:

<ul>
  % for item in basket:
  <li>{{item}}</li>
  % end
</ul>

的Python:

with open('index.html', 'r') as htmlFile:
    return bottle.template(htmlFile.read(), basket=['item1', 'item2'])