如果我重定向到另一个页面@ app.route('/ results'),这个功能工作正常,但是我很难在没有重新加载的情况下让它在同一个页面中工作:
@app.route('/')
def static_file():
return app.send_static_file('index.html')
@app.route('/')
def results():
headers = {
'X-ApiKey': 'xxxxxxxxxxxxxxxx',
}
data = {'data': request.args.get('data')}
results = requests.post('https://apiv2.indico.io/personality', headers=headers, data=data)
return results.text
我想在同一页面(输入框下方)显示api调用的结果
<form action="" onsubmit="return false";>
<strong> Try It <br><br>
</strong><br>
<input type="text" name="data"><br><br>
<input type="submit" onclick="showResults();">
<label id:Results>Your Result: </label>
<p><span id='display'></span></p>
</form>
我还添加了一些JS:
<script language="JavaScript">
function showResults() {
document.getElementById('display').innerHTML =
document.getElementById("Results").value;
}
</script>
我的代码出了什么问题?我正在使用Flask框架。
答案 0 :(得分:1)
如果我理解正确,那么您想要实现的是使用Flask微框架编写RESTful API,这样您就可以获得一些结果并在页面上显示而无需重新加载。如果是这样,你的做法是错误的。
首先,您无法使用通用网址路由多个功能:
@app.route('/common_route')
def foo():
pass
@app.route('/common_route')
def bar():
pass
如果您加载http://yourwebsite/common_route,则无法确定要调用哪个函数。
为了避免页面重新加载,您应该使用Flask-RESTful模块并实现API以获得结果。
import flask-restful
class Results(Resource):
def __init__(self):
super(Results)
#for GET requests
def get(self):
#your code here
pass
#for POST requests
def post(self):
#your code here
pass
api = Api(app)
api.add_resource(Results(),'/api/results')
然后你可以获得你的结果f.e.与JS&amp; jQuery代码:https://www.w3schools.com/jquery/jquery_ajax_get_post.asp