【问题标题】:Using Python CGI for a big HTML file使用 Python CGI 处理大的 HTML 文件
【发布时间】:2014-07-02 11:36:21
【问题描述】:

我有一个名为 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 真的很大,所以这只是一种解决方案吗?

【问题讨论】:

    标签: python html web cgi


    【解决方案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')
    

    【讨论】:

      【解决方案2】:

      同时考虑Python Bottle (SimpleTemplate 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'])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-02
        • 1970-01-01
        • 2011-10-17
        • 1970-01-01
        • 1970-01-01
        • 2011-11-02
        • 1970-01-01
        相关资源
        最近更新 更多