Redirect 单击按钮时的烧瓶重定向未发生

Redirect 单击按钮时的烧瓶重定向未发生,redirect,flask,Redirect,Flask,总的来说,我还在努力学习flask/redirects/etc。我试图创建一个带有提交按钮的简单页面,当我提交时,会重定向到一个显示json数据的页面。但当我点击按钮时,什么也没发生。我可以访问浏览器url中的端点 这就是我的理解。请指出我误解的地方 提供index.html 我有一个表单(提交按钮),在index.html中有POST方法 当我单击submit按钮时,它会将我重定向到包含数据的jsonify的页面 我使用jsonify的原因是因为这是我尝试采取的更大步骤的一部分,我单击按钮,它

总的来说,我还在努力学习flask/redirects/etc。我试图创建一个带有提交按钮的简单页面,当我提交时,会重定向到一个显示json数据的页面。但当我点击按钮时,什么也没发生。我可以访问浏览器url中的端点

这就是我的理解。请指出我误解的地方

  • 提供
    index.html

  • 我有一个表单(提交按钮),在
    index.html
    中有
    POST
    方法

  • 当我单击submit按钮时,它会将我重定向到包含数据的
    jsonify
    的页面

  • 我使用jsonify的原因是因为这是我尝试采取的更大步骤的一部分,我单击按钮,它查询数据库并返回resultproxy的json。我想这将与AJAX有关。我还得想办法

    app.py

    from flask import Flask, render_template, redirect, request, url_for, jsonify
    from forms import Submit
    import os
    import json
    
    app = Flask(__name__)
    app.config['SECRET_KEY'] = os.urandom(12)
    
    
    @app.route('/', methods=['GET', 'POST'])
    def home():
        form = Submit()
        if request.method == 'POST':
            return redirect(url_for('data'))
        return render_template('index.html')
    
    
    @app.route('/data')
    def data():
        data = {
            'author': 'rowling',
            'book': 'harry potter'
        }
        return jsonify(data)
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    from flask_wtf import FlaskForm
    from wtforms import validators, SubmitField
    
    
    class Submit(FlaskForm):
        submit = SubmitField(label='submit')
    
    forms.py

    from flask import Flask, render_template, redirect, request, url_for, jsonify
    from forms import Submit
    import os
    import json
    
    app = Flask(__name__)
    app.config['SECRET_KEY'] = os.urandom(12)
    
    
    @app.route('/', methods=['GET', 'POST'])
    def home():
        form = Submit()
        if request.method == 'POST':
            return redirect(url_for('data'))
        return render_template('index.html')
    
    
    @app.route('/data')
    def data():
        data = {
            'author': 'rowling',
            'book': 'harry potter'
        }
        return jsonify(data)
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    from flask_wtf import FlaskForm
    from wtforms import validators, SubmitField
    
    
    class Submit(FlaskForm):
        submit = SubmitField(label='submit')
    
    index.html

    <h1>Hello world</h1>
    
    <br>
    <br>
    
    <form action="{{url_for ('data') }}" method="GET">
        <input type="button" value="Submit" action="{{url_for ('data') }}">
    </form>
    
    你好,世界
    


    请查看您的模板,表单定义为使用GET方法而不是POST方法提交:

    
    
    此外,操作URL被设置为
    /data
    ,而不是
    /
    。IMO,您需要将此行更改为:

    
    
    此外,您必须将
    type=“submit”
    添加到
    元素中,使其成为提交表单:

    
    
    因为您使用WTForms,所以只需使用
    {{form.submit}
    来呈现提交按钮。最终表格为:

    
    {{form.submit}
    

    试试看,让我知道它是否有效

    我通过将
    更改为
    {{form.submit()}
    解决了这个问题。我不明白为什么后者有效,但前者不行。如果有人能帮我理解,我将不胜感激。我注意到
    GET
    并更改为
    POST
    。但它不起作用。我还删除了
    操作=
    。仍然没有重定向。。。这是我目前的表格
    这是有帮助的。谢谢。