在cherrypy中在python和javascript之间共享变量信息

在cherrypy中在python和javascript之间共享变量信息,javascript,python,variables,cherrypy,Javascript,Python,Variables,Cherrypy,我希望通过cherrypy将python环境中的变量信息共享到java脚本中,如下所示: class test(object): @cherrypy.expose def index(self): variableX = 2016 return """<!DOCTYPE html> <html> <head> <title>Set interval with two

我希望通过cherrypy将python环境中的变量信息共享到java脚本中,如下所示:

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>"""
类测试(对象):
@樱桃树
def索引(自):
变量x=2016
返回“”
用两个输入设置间隔
输入#日期#从,输入#日期#到{
字体系列:Tahoma;
字体大小:12px;
背景色:#fafafa;
边框:#C0C0 1px实心;
宽度:100px;
}
span.label{
字体系列:Tahoma;
字体大小:12px;
}
var myCalendar;
函数doOnLoad(){
myCalendar=新的DHTMLXLCalendarObject([“date_from”,“date_to”]);
//获取今日信息(开始代码)
var tomm=新日期();
var today=新日期();
var dd=today.getDate();
var mm=today.getMonth()+1;//一月是0!
var yyyy=today.getFullYear();

if(dd您只需要创建一个值为
variableX
的新javascript变量

如您的示例所示,添加以下行:

...
// 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();
...
@cherrypy.expose
def index(self):
    return jinja2env.get_template('index.html').render(variableX=2016)
您的python代码如下所示:

...
// getting today info (start code)
var variableX = {{variabeX}};
var tomm = new Date();
...
@cherrypy.expose
def index(self):
    return jinja2env.get_template('index.html').render(variableX=2016)

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

如您的示例所示,添加以下行:

...
// 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();
...
@cherrypy.expose
def index(self):
    return jinja2env.get_template('index.html').render(variableX=2016)
您的python代码如下所示:

...
// getting today info (start code)
var variableX = {{variabeX}};
var tomm = new Date();
...
@cherrypy.expose
def index(self):
    return jinja2env.get_template('index.html').render(variableX=2016)

谢谢你,它成功了。我会看看Jinja2。再次感谢你的回答,如果variableX是一个列表(例如:
[[5,“1”],[8“2”]
),它不会处理。它给出:
类型错误:无法连接'str'和'list'对象
有什么想法吗?@jordeu谢谢。我正在挖掘Jinja2(现在正在玩它).Btw,传递列表的解决方案与您提到的相同。只需-->
“+str(ListX)+”;
再次感谢您的支持。@jordeu谢谢,它成功了。我将查看Jinja2。如果变量x是列表,再次感谢您的回答(例如:
[[5,“一”],[8“二”]
)。它不会处理。它给出:
TypeError:无法连接'str'和'list'对象
有什么想法吗?@jordeu谢谢你。我正在挖掘jinja2(正在玩它)。顺便说一句,传递列表的解决方案和你提到的一样。只需-->
“+str(ListX)+”;
再次感谢你的支持。@jordeu