@ app.route没有重定向工作

时间:2017-06-09 21:56:30

标签: javascript python html flask

如果我重定向到另一个页面@ 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框架。

1 个答案:

答案 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