在Flask上,有沒有辦法運行一個python腳本而不會轉到另一個頁面?即沒有重定向?有沒有辦法從網站運行python腳本?
我想要做的是能夠按下頁面上的按鈕,然後觸發一個Python函數,它將返回一些數據並在同一頁面上顯示數據。 Flask有可能嗎?
在Flask上,有沒有辦法運行一個python腳本而不會轉到另一個頁面?即沒有重定向?有沒有辦法從網站運行python腳本?
我想要做的是能夠按下頁面上的按鈕,然後觸發一個Python函數,它將返回一些數據並在同一頁面上顯示數據。 Flask有可能嗎?
解決方案是AJAX。
爲鏈接指出 http://api.jquery.com/jquery.ajax/
$.ajax({
url: "url defined in Flask",
method: "GET"
}).done(function() {
// Change your DOM
});
API中定義瓶:
創建RESTful API中。
http://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask
定義的路線的URL。編寫要調用的函數。返回爲JSON。在done函數中,您可以更改DOM元素。
下面是這樣一個程序的例子:
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)
對您的服務器發出請求,而無需加載單獨的頁面,您通常使用Ajax調用 – njzk2
的技術,你要尋找的被稱爲[AJAX ](HTTPS://en.wikipedia.org/wiki/Ajax_ \(編程\))。 – RoadieRich