2012-10-31 68 views
4

我有一个加载了瓶子的图像名称列表,我正在渲染一个html模板,以便页面显示图像。我似乎可以改变图像列表(即添加图像)的唯一方法是创建一个视图,其中包含用于更改列表的代码,但为了访问视图,必须重新加载整个页面。有没有什么办法可以用烧瓶来改变列表而不必重新加载整个页面?更改变量而不重新加载页面

+6

Ajax请求? –

+0

是的,但我想特意更改图像列表,这是一个python变量。我会使用js,但它更容易使用glob与Python,所以我可以加载图像,而不需要知道它们的文件名。 – fergusdawson

回答

10

雅各布·鲍耶是绝对正确的 - 使用了Ajax:

from flask import jsonify 
from werkzeug.security import safe_join 

@app.route("/gallery") 
def gallery(): 
    images = get_images_from_dir("some/base/path/*.jpg") 
    return render_template("gallery.html", images=images) 


@app.route("/search/images", methods=["POST"]) 
def search_images(): 
    glob_path = request.form["image_query"] 
    glob_path = safe_join("/some/base/path", glob_path) 
    return jsonify(images=get_images_from_dir(glob_path)) 
在你的模板

,然后只需点击相应的端点:使用JavaScript

<!-- snip --> 
<script> 
// jQuery here - you can use anything you want :-) 
$.post({ 
    url: "{{ url_for("search_images") }}", 
    success: function(data) { 
     console.log(data); 
    }, 
    error: function() { console.log("Error", arguments); } 
}); 
</script> 
相关问题