Cherrypy登录后呈现新的jinja2页面

时间:2017-05-12 17:35:15

标签: python ajax web-applications jinja2 cherrypy

我有一个应用程序,我想放在登录页面后面。我在加载的登录页面上通过ajax接收登录信息,然后我想根据用户加载一些数据并将它们呈现给新页面。我也使用jinja2根据用户数据渲染javascript。

@cherrypy.expose
@cherrypy.tools.json_out()
@cherrypy.tools.json_in()
def get_data(self):
    result = {"operation": "request", "result": "success"}

    input_json = cherrypy.request.json
    value = input_json["anno"]
    print value
    return result

@cherrypy.expose
@cherrypy.tools.json_out()
@cherrypy.tools.json_in()
def login(self):
    result = {"operation": "request", "result": "success"}

    input_json = cherrypy.request.json
    uname = input_json["uname"]

    print uname
    tmpl = env.get_template('index.html')
    imlist = os.listdir('app/public/clips'+uname)
    imlist.sort()
    print "loading homepage for user " + uname
    imlist = ['static/clips/'+item for item in imlist]

    return tmpl.render(salutation='User:', target=uname,image_list=json.dumps(imlist))

login.html中的登录脚本是:

function enter_login(){
    var tb = document.getElementById("scriptBox");
        var tbtxt = tb.value;
        $.ajax({
            url: "login",
            type: "POST",
            contentType: 'application/json',
            data: JSON.stringify({"uname": tbtxt}),
            dataType:"json"
        });
  }

我在这里做错了什么?如何使用给定的jinja参数渲染index.html

1 个答案:

答案 0 :(得分:0)

我能够通过向AJAX调用添加成功函数来解决这个问题:

success:function(data)
            {
              if(data!="")
              {
                $("body").html(data);
              }
            }