2015-05-24 59 views
0

我有一個非常簡單的查詢,我很抱歉,但我一直卡住,無法找到答案一段時間。Cherrypy symple dynamic html

在腳本咆哮中,我試圖「動態地」使用python生成的一些變量url1和url2創建一個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()) 

回答

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。其次,做內插不只是返回一個變量。