Python 当重定向到索引时,Flask重定向到错误的视图
我一直遇到这个奇怪的问题,似乎无法找到解决办法。我无法在这里完整地复制和显示我的所有代码,但我将尝试概述我的flask应用程序的总体结构,以展示我的问题 (让我们忽略/static文件夹和my helper模块中的所有内容) 我有3个主要视图,我们称它们为viewA、viewB和index:Python 当重定向到索引时,Flask重定向到错误的视图,python,flask,Python,Flask,我一直遇到这个奇怪的问题,似乎无法找到解决办法。我无法在这里完整地复制和显示我的所有代码,但我将尝试概述我的flask应用程序的总体结构,以展示我的问题 (让我们忽略/static文件夹和my helper模块中的所有内容) 我有3个主要视图,我们称它们为viewA、viewB和index: viewA.html viewB.html index.html viewA和viewB都显示两个表单,但内容不同(即viewA显示form1和form2,viewB也显示form1和form2) 我的脚
viewA.html
viewB.html
index.html
viewA和viewB都显示两个表单,但内容不同(即viewA显示form1和form2,viewB也显示form1和form2)
我的脚本代码的简化版本如下:
#imports
from flask import Flask, render_template, session, redirect, url_for, request
from flask_wtf import FlaskForm
#etc. etc.
app = Flask(__name__)
app.config['SECRET_KEY'] = 'blah blah blah'
manager = Manager(app)
bootstrap = Bootstrap(app)
moment = Moment(app)
class FormOne(FlaskForm):
sample_field = StringField('Sample Field:')
class FormTwo(FlaskForm):
other_field = StringField('Other Field:', validators=[Required()])
submit = SubmitField('Submit')
class UploadToA(FlaskForm):
content= StringField('Content to send to view A:', validators=[Required()])
submit = SubmitField('Submit')
class UploadToB(FlaskForm):
content= StringField('Content to send to view A:', validators=[Required()])
submit = SubmitField('Submit')
@app.route('/ViewA', methods=['GET', 'POST'])
def view_a():
"""
A lot of data manipulation
"""
form1 = FormOne()
form2 = FormTwo()
if request.method == 'GET':
"""
populate forms with content
"""
if request.method == 'POST':
if form2.validate_on_submit();
"""
clear session variables
"""
return redirect(url_for('index'), code=302)
return render_template('viewA.html', form1=form1, form2=form2)
@app.route('/ViewB', methods=['GET', 'POST'])
def view_b():
"""
A lot of data manipulation
"""
form1 = FormOne()
form2 = FormTwo()
if request.method == 'GET':
"""
populate forms with content
"""
if request.method == 'POST':
if form2.validate_on_submit();
"""
clear session variables
"""
return redirect(url_for('index'), code=302)
return render_template('viewB.html', form1=form1, form2=form2)
@app.route('/', methods=['GET', 'POST'])
def index():
"""
Some data manipulation
"""
formA = UploadToA()
formB = UploadToB()
if formA.validate_on_submit()':
"""
pull content from form A
create some session variables
"""
return redirect(url_for('view_a'))
if formB.validate_on_submit()':
"""
pull content from form B
create some session variables
"""
return redirect(url_for('view_b'))
return render_template('index.html', formA=formA, formB=formB)
if __name__ == '__main__':
manager.run()
现在我手头的问题是,出于某种奇怪的原因,当我在“viewA.html”中提交表单时,我应该被重定向回“index.html”,但出于某种奇怪的原因,它将我重定向到“viewB.html”。此外,反过来也是如此:当我在“viewB.html”中提交表单时,我也应该被重定向回“index.html”,但它会将我重定向到“viewA.html”。然而,如果我在viewA或viewB中,如果我在浏览器中手动输入url,我就不会返回索引视图
你知道我为什么会遇到这个问题吗
提前感谢:)因为这里没有完整的代码,我不能确定这一点,但我认为发生的是:
这可能是向视图B发送重定向。请尝试将最后一行更改为类似“返回其他内容”,并查看它在提交表单a后是否发送该内容。我终于找到了问题的根源。事实证明,在我的“viewA.html”模板文件中,我的