2013-02-28 3 views
4

Мне нужно прочитать ссылку url из текстового файла в python как переменную и использовать ее в html. Текстовый файл «file.txt» содержит только одну строку «http://188.xxx.xxx.xx:8878», эта строка должна быть сохранена в переменной «ссылка», тогда я должен использовать содержание этой переменной в html, чтобы ссылка была открыта, когда Я нажимаю на изображение кнопки «go_online.png». Я попытался изменить свой код следующим образом, но он не работает! любая помощь, пожалуйста?Как передать переменную python переменной html?

#!/usr/bin/python 
import cherrypy 
import os.path 
from auth import AuthController, require, member_of, name_is 
class Server(object): 
    _cp_config = { 
     'tools.sessions.on': True, 
     'tools.auth.on': True 
    } 
    auth = AuthController()  
    @cherrypy.expose 
    @require() 
    def index(self): 
     f = open ("file.txt","r") 
     link = f.read() 
     print link 
     f.close() 
     html = """ 
     <html> 
     <script language="javascript" type="text/javascript"> 
      var var_link = '{{ link }}'; 
     </script> 
      <body> 
      <p>{htmlText} 
      <p>   
      <a href={{ var_link }} ><img src="images/go_online.png"></a> 
      </body> 
     </html> 
      """ 

     myText = ''   
     myText = "Hellow World"   
     return html.format(htmlText=myText) 
    index.exposed = True 

#configuration 
conf = { 
    'global' : { 
     'server.socket_host': '0.0.0.0', #0.0.0.0 or specific IP 
     'server.socket_port': 8085 #server port 
    }, 

    '/images': { #images served as static files 
     'tools.staticdir.on': True, 
     'tools.staticdir.dir': os.path.abspath('/home/ubuntu/webserver/images') 
    } 
    } 
cherrypy.quickstart(Server(), config=conf) 
+0

На какой странице будет указан этот URL? – Makoto

+0

URL-адрес моего сервера, его внешний адрес с открытым портом. – Linux

+0

URL-адрес может быть любой веб-страницей, такой как www.google.com, ...... и т. Д. – Linux

ответ

3

Прежде всего, не уверен, что часть javascript имеет смысл, просто оставьте это. Кроме того, вы открываете тег p, но не закрываете его. Не уверен, что такое ваш шаблонный движок, но вы можете просто передать переменные в чистом питоне. Кроме того, не забудьте поставить кавычки по вашей ссылке. Так что ваш код должен быть что-то вроде:.

class Server(object): 
    _cp_config = { 
     'tools.sessions.on': True, 
     'tools.auth.on': True 
    } 
    auth = AuthController()  
    @cherrypy.expose 
    @require() 
    def index(self): 
     f = open ("file.txt","r") 
     link = f.read() 
     f.close() 
     myText = "Hello World" 
     html = """ 
     <html> 
      <body> 
       <p>%s</p>   
       <a href="%s" ><img src="images/go_online.png"></a> 
      </body> 
     </html> 
     """ %(myText, link)   
     return html 
    index.exposed = True 

(кстати, в% S вещей струнные заполнителей, которые будут poplulated переменных в% (firstString, secondString) в конце строки мульти линии

+0

Спасибо за ответ, но жаль, что он не работает. Я пытался с возвратом html.format (htmlText = myText, link), но не работает! Можете ли вы переписать полный код? – Linux

+0

обновите свой ответ, надеюсь, что это поможет – Hoff

+0

Спасибо Hoff, его работа сейчас. В моей исходной треске переменная «myText = ''» будет иметь новые значения строк в соответствии с некоторыми условиями «if», так что я должен использовать «return html.format (htmlText = myText) «У вас есть еще одно решение, позволяющее мне использовать return html.format (htmlText = myText)? – Linux

Смежные вопросы