我正在尝试通过我的网站查询数据库,并使用Jinja模板动态添加结果列。我正在使用flask和我的视图功能。我正在渲染像这样的值
return render_template('query.html',my_list=my_list )
问题是,当我加载页面时,用户还没有查询数据库,所以my_list为空。用户通过按下html页面上的按钮并通过jquery发出ajax请求来查询数据库。我现在的问题是,即使页面已经加载,也可以使用jinja模板返回my_list,这意味着我必须第二次返回render_template(在提交按钮之后)以获取my_list的值。
P.S。我不想使用json解析。
以下是一些示例代码。我使用列SubmitterID的intranetID和平台列平台的值查询数据库,以使用其余列的值将整个条目返回到数据库。
@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 %}
当您按下按钮时,在Javascript文件上我发出了像这样的ajax请求
$("#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
}
});
});
答案 0 :(得分:0)
Ajax调用是一个完全独立的请求。您可以在该请求中执行您想要的操作,包括渲染模板。