Cherrypy 简单动态 html

Cherrypy symple dynamic html

我有一个非常简单的查询,我很抱歉,但我一直被困了一段时间而无法找到答案。

在下面的脚本中,我试图 "dynamically" 使用 url1 和 url2 进一步生成的一些变量 url 创建一个 url .

我试过 % 但也没有成功。

谁能指出代码有什么问题。

谢谢

import cherrypy

class PageGenerator(object):
    page_template = """<html>
          <head></head>
          <body>
            <div><p><object data=http://en.wikipedia.org/w/index.php?title={{url1}} width="1200" height="600">  Error: Embedded data could not be displayed. </object>
            </p>
            <p><object data=http://en.wikipedia.org/w/index.php?title={{url2}} width="1200" height="600">  Error: Embedded data could not be displayed. </object>
            </p></div>
          </body>
        </html>"""

    @cherrypy.expose
    def generate(self, url1):
        url1 = "Neurosurgery "
        return url1
    @cherrypy.expose
    def generate(self, url2):
        url2 = "Urology "
        return url12

if __name__ == '__main__':
    cherrypy.quickstart(PageGenerator())

Python 有 3 种标准的字符串格式化(或插值)方式。

  1. % (modulo operator)'one %s, two %s' % (var1, var2).
  2. str.format'one {0}, two {1}'.format(var1, var2)
  3. string.Template class.

    from string import Template
    
    t = Template('one $var1, two $var2')
    t.substitute(var1 = var1, var2 = var2)
    

您在模板中使用的占位符语法未在 Python 的电池中实现。除了从页面处理程序 returning 一个字符串(url1url2),CherryPy 显然只会显示它。它对您的 page_template 属性一无所知,您需要指示 CherryPy 使用它。

首先,确定模板语法。要么使用标准 3,要么了解 Jinja2(您正在使用的语法)。在后一种情况下,Whosebug 有 plenty of information。其次,做插值不只是 return 一个变量。