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