2015-05-24 2 views
0

У меня очень простой запрос, и я извиняюсь, но я застрял, не найдя ответа на некоторое время.Cherrypy symple dynamic html

В следующем скрипте я пытаюсь «динамически» создать URL-адрес, используя некоторую переменную url1 и url2, сгенерированную python дальше.

Я пробовал с%, но не имел успеха.

Может кто-нибудь указать, что не так с кодом.

Благодаря

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. Кроме того, возвращая строку, (url1 и url2 в вашем случае), из обработчика страницы CherryPy, очевидно, просто отобразит ее. Он ничего не знает о вашем атрибуте page_template, и вам нужно дать указание CherryPy использовать его.

Сначала решите синтаксис шаблона. Либо используйте стандарт 3, либо узнайте о Jinja2 (синтаксис, который вы используете). В последнем случае StackOverflow имеет plenty of information. Во-вторых, интерполяция не просто возвращает переменную.