2016-04-21 138 views
1

我期待分享Python环境变量信息,以Java脚本中的CherryPy如下:共享变量信息

class test(object): 

     @cherrypy.expose 
     def index(self): 
      variableX = 2016 

      return """<!DOCTYPE html> 
<html> 
<head> 
<title>Set interval with two inputs</title> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"/> 
<link rel="stylesheet" type="text/css" href="/static/codebase/dhtmlxcalendar.css"/> 
<script src="/static/codebase/dhtmlxcalendar.js"></script> 
<style> 
    input#date_from, input#date_to { 
     font-family: Tahoma; 
     font-size: 12px; 
     background-color: #fafafa; 
     border: #c0c0c0 1px solid; 
     width: 100px; 
    } 
    span.label { 
     font-family: Tahoma; 
     font-size: 12px; 
    } 
</style> 
<script> 
    var myCalendar; 
    function doOnLoad() { 
     myCalendar = new dhtmlXCalendarObject(["date_from","date_to"]); 

     // getting today info (start code) 
     var tomm = new Date(); 
     var today = new Date(); 
     var dd = today.getDate(); 
     var mm = today.getMonth()+1; //January is 0! 
     var yyyy = today.getFullYear(); 
     if(dd<10) {dd='0'+dd}; 
     if(mm<10) {mm='0'+mm}; 
     today = yyyy+'-'+mm+'-'+dd; 
     // getting today info (end code) 


     myCalendar.setDate(today); 
     myCalendar.hideTime(); 
     // init values 
     var t = new Date(); 
     byId("date_from").value = variableX ; 
     byId("date_to").value = variableX ; 

    } 

    function setSens(id, k) { 
     // update range 
     if (k == "min") { 
      myCalendar.setSensitiveRange(byId(id).value, null); 
     } else { 
      myCalendar.setSensitiveRange(null, byId(id).value); 
     } 
    } 
    function byId(id) { 
     return document.getElementById(id); 
    } 
</script> 



</head> 
<body onload="doOnLoad();"> 
     <form method="get" action="generate"> 

<div style="position:relative;height:280px;"> 
    <span class="label">From</span> <input type="text" id="date_from" name="FirstDate" onclick="setSens('date_to', 'max');" readonly="true"> 
    <span class="label">Till</span> <input type="text" id="date_to" name="LastDate" onclick="setSens('date_from', 'min');" readonly="true"> 


       <button type="submit">Give it now!</button> 
     </form> 
</div> 

</body> 


</html>""" 

我试图让variableX(这是2016年价值)在html内的javascript内部。任何想法?

回答

0

您只需创建一个新的javascript变量,其值为variableX

正如您的例子中加入这一行:

... 
// getting today info (start code) 
var variableX = """ + str(variableX) + """; 
var tomm = new Date(); 
... 

但我真的建议你学习如何使用模板引擎像Jinja2的,然后创建一个index.html模板是这样的:

... 
// getting today info (start code) 
var variableX = {{variabeX}}; 
var tomm = new Date(); 
... 

您的Python代码将如下所示:

@cherrypy.expose 
def index(self): 
    return jinja2env.get_template('index.html').render(variableX=2016) 
+0

谢谢,它工作。我会看看Jinja2。再次感谢您的回答 – test3321

+0

如果变量X是一个列表(例如:[[[5,“one”],[8“two”]]')。 它不会处理。它给出:'TypeError:不能连接'str'和'list'对象' 任何想法? @jordeu – test3321

+0

是的,使用jinja2 – jordeu