2016-04-21 6 views
1

I variable Informationen aus Python-Umgebung Java-Skript in cherrypy folgend zu teilen Suche:Sharing-Variablen Informationen zwischen Python und Javascript in 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>""" 

Ich versuche, den Wert von variableX (um die 2016) innerhalb des Javascript innerhalb von HTML. Irgendeine Idee?

Antwort

0

Sie müssen nur eine neue Javascript-Variable mit dem Wert variableX erstellen.

Wie in Ihrem Beispiel fügen Sie diese Zeile:

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

Aber ich empfehle Ihnen wirklich zu lernen, wie man eine Template-Engine wie Jinja2 verwenden, und erstellen Sie dann eine index.html Vorlage wie folgt aus:

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

Und Ihr Python-Code wird wie folgt aussehen:

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

Vielen Dank, es hat funktioniert. Ich werde Jinja2 anschauen. Nochmals vielen Dank für Ihre Antwort – test3321

+0

Falls die VariableX eine Liste ist (Bsp .: '[[5," eins "], [8" zwei "]]). Es wird nicht verarbeitet. Es gibt: 'TypeError: kann 'str' und 'list' Objekte nicht verketten Irgendwelche Ideen? @jordeu – test3321

+0

Ja, verwenden Sie jinja2 – jordeu