Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在页面已加载后第二次呈现模板_Python_Ajax_Flask_Rendering_Jinja2 - Fatal编程技术网

Python 在页面已加载后第二次呈现模板

Python 在页面已加载后第二次呈现模板,python,ajax,flask,rendering,jinja2,Python,Ajax,Flask,Rendering,Jinja2,我试图通过我的网站查询数据库,并使用Jinja模板动态添加带有结果的列。我正在使用flask和我的视图功能。我是这样渲染值的 返回渲染模板('query.html',my\u list=my\u list) 问题是,当我加载页面时,用户还没有查询数据库,所以我的列表是空的。用户通过按下html页面上的按钮并通过jquery发出ajax请求来查询数据库。我现在的问题是,即使页面已经加载,是否可以使用jinja模板返回我的_列表,这意味着我必须第二次返回render_模板(在提交按钮之后)以获取我的

我试图通过我的网站查询数据库,并使用Jinja模板动态添加带有结果的列。我正在使用flask和我的视图功能。我是这样渲染值的

返回渲染模板('query.html',my\u list=my\u list)

问题是,当我加载页面时,用户还没有查询数据库,所以我的列表是空的。用户通过按下html页面上的按钮并通过jquery发出ajax请求来查询数据库。我现在的问题是,即使页面已经加载,是否可以使用jinja模板返回我的_列表,这意味着我必须第二次返回render_模板(在提交按钮之后)以获取我的_列表的值

p、 我不喜欢使用json解析

下面是一些示例代码。我使用列SubmitterID的intranetID值和列平台的platform值查询数据库,以将整个条目返回到数据库,同时返回其余列的值

@app.route('/querydbvalues',methods=['POST', 'GET'])
def querydbvalues():
  if request.method == 'POST' or  request.method == 'GET':
    results = models.mydatabase.query.filter_by(SubmitterID=qIntranetID,Platforms=qPlatform).all()
    my_list = [i.user for i in results]
    return render_template('query.html',my_list=my_list ) 
在我的html页面上

{% for n in my_list %}
<li>{{n}}</li>
{% endfor %}

Ajax调用是一个完全独立的请求。您可以在该请求中执行您想要的操作,包括渲染模板。

Ajax调用是一个完全独立的请求。您可以在该请求中执行您想要的操作,包括渲染模板。

您好,谢谢您的输入。然而,我的问题是,我想在同一个html页面上呈现“我的列表”,而不刷新或更改到另一个页面。由于某种原因我不能,这就是我寻求帮助的原因。这就是阿贾克斯所做的。你也许应该解释为什么你在渲染同一个页面时遇到问题,而不是说“因为某些原因我不能”。我在渲染同一个页面时没有问题。我在呈现“my_list”(我在html页面之后呈现的第二个参数)上的值以及在我的网页上将这些值与jinja模板一起使用时遇到问题。恐怕我还不清楚你在问什么。你小心地隐藏了你的JS成功方法:你需要将Flask呈现的结果插入到你现有的页面中。你好,首先感谢你和我在一起,并且仍然试图帮助我。通过“return render_template('query.html',my_list=my_list)”,我将结果返回到my_list,而使用jinja模板,我可以在html页面上使用my_list值,就像我在上面的代码中描述的那样。但是,当第一次加载页面时,my_list=[]仅在用户按下submit并查询数据库时更改值。一旦我得到了我想要的值,我想再次返回它们,以便与jinja模板一起使用。这不会发生,我无法返回我的列表的新值。您好,谢谢您的输入。然而,我的问题是,我想在同一个html页面上呈现“我的列表”,而不刷新或更改到另一个页面。由于某种原因我不能,这就是我寻求帮助的原因。这就是阿贾克斯所做的。你也许应该解释为什么你在渲染同一个页面时遇到问题,而不是说“因为某些原因我不能”。我在渲染同一个页面时没有问题。我在呈现“my_list”(我在html页面之后呈现的第二个参数)上的值以及在我的网页上将这些值与jinja模板一起使用时遇到问题。恐怕我还不清楚你在问什么。你小心地隐藏了你的JS成功方法:你需要将Flask呈现的结果插入到你现有的页面中。你好,首先感谢你和我在一起,并且仍然试图帮助我。通过“return render_template('query.html',my_list=my_list)”,我将结果返回到my_list,而使用jinja模板,我可以在html页面上使用my_list值,就像我在上面的代码中描述的那样。但是,当第一次加载页面时,my_list=[]仅在用户按下submit并查询数据库时更改值。一旦我得到了我想要的值,我想再次返回它们,以便与jinja模板一起使用。这不会发生,并且我无法返回我的\u列表的新值。您不需要检查请求方法。Flask只将GET和POST请求路由到该端点。您不需要检查请求方法。Flask只将GET和POST请求路由到该端点。
$("#SearchDatabase").click(function(){
    var tmp = document.getElementById("qIntranetID").value;
    var tmp2 = document.getElementById("qPlatform").value;
    jQuery.ajax({
        dataType: "json",
        url:"/querydbvalues", //tell the script where to send requests
        data:{text:tmp,text2:tmp2},
        type:'GET',
        contentType: 'application/json',
        success: function(results){
            //do something
        }
    });
});