我有一个Web应用程序,当HTML中的select元素发生更改时,它会从Flask获取动态数据.当然这是通过jquery ajax完成的.没有probs在这里我得到了.
问题是,Flask发送的动态数据是Flask-sqlalchemy数据库中的对象列表.
当然,数据是从Flask发送的JSON.
我想迭代这些对象以使用Jinja显示它们的信息.
HTML
jQuery的
$('body').on('change','#mySelect',function(){
var option_id = $('#mySelect').find(':selected').attr('id');
$.ajax({
url: "{{ url_for('_get_content') }}",type: "POST",dataType: "json",data: {'option_id':option_id},success: function(data){
data = data.data;
/* HERE I WANT TO ITERATE THROUGH THE data LIST OF OBJECTS */
}
});
});
烧瓶
@app.route('/_get_content/')
def _get_content():
option_id = request.form['option_id']
all_options = models.Content.query.filter_by(id=option_id)
return jsonify({'data': all_options})
PS:我知道jinja首先被渲染,因此没有办法将jQuery变量分配给Jinja.那么如果我不能在Jinja中使用它,我将如何迭代数据列表呢?
最佳答案
好的,我明白了.
简单地说,我制作了一个外部html文件并添加了所需的jinja模板.
{% for object in object_list %}
{{object.name}}
{% endfor %}
然后在我的Flask文件中,我逐字地将render_template响应返回给jquery(其中包含我想要追加的HTML)
objects_from_db = getAllObjects()
return jsonify({'data': render_template('the_temp.html',object_list=objects_from_db)}
然后只需将响应中的HTML附加到要更新的所需div.