在Flask上,有没有办法运行python脚本而无需转到另一个页面?即没有重定向?
我想要做的是,为了能够按下页面上的按钮,它会触发一个Python函数,该函数将返回一些数据并在同一页面上显示数据。 Flask会这样吗?
答案 0 :(得分:3)
解决方案是AJAX。
如链接中所述 http://api.jquery.com/jquery.ajax/
$.ajax({
url: "url defined in Flask",
method: "GET"
}).done(function() {
// Change your DOM
});
APi在Flask中定义:
创建RESTFUL API。
http://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask
定义路线中的网址。写下要调用的函数。返回 JSON 。在done函数中,您可以更改DOM元素。
答案 1 :(得分:0)
以下是此类计划的一个示例:
from flask import Flask, render_template_string, request, jsonify
import wikipedia
app = Flask(__name__)
index_html='''
<!DOCTYPE html>
<html lang="en">
<head><title>Wiki Lookup Example</title></head>
<body>
<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"
type="text/javascript"></script>
<script type="text/javascript">
function submit() {
$.getJSON({{ request.script_root|tojson|safe }} + '/topics',
{ key: $('#key').val() },
function(data) {
var ul = $('#result');
ul.empty();
$(data.topics).each(function(index, item) {
ul.append($('<li>',{text:item}));});});}
</script>
<p> Search Term: <input id="key" name="key"/>
<input id="submit" type="button" value="Go" onclick="submit();" /></p>
<hr /><ul id="result"></ul>
</body></html>'''
@app.route('/')
def index():
return render_template_string(index_html)
@app.route('/topics')
def topics():
key = request.args.get('key')
topics = wikipedia.search(key) or ['No topic found']
return jsonify(topics=topics)
app.run(debug=True)