【问题标题】:Cherrypy symple dynamic htmlCherrypy simple 动态html
【发布时间】:2015-05-24 22:12:10
【问题描述】:

我有一个非常简单的问题,我很抱歉,但我被卡住了一段时间无法找到答案。

在下面的脚本中,我试图“动态”创建一个 url,使用一些由 python 生成的变量 url1 和 url2 进一步向下。

我尝试过 % 但也没有成功。

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

谢谢

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 html jinja2 cherrypy


    【解决方案1】:

    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 电池中实现。除了从页面处理程序返回一个字符串(url1url2 在您的情况下)之外,CherryPy 显然只会显示它。它对您的 page_template 属性一无所知,您需要指示 CherryPy 使用它。

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

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多