我的玩具应用程序的视图功能是:
@app.route('/', methods=['GET', 'POST']) def index(): name = None form = NameForm() if form.validate_on_submit(): name = form.name.data form.name.data = '' return render_template('index.html', form=form, name=name)当我使用PRG时它看起来像这样:
@app.route('/', methods=['GET', 'POST']) def index(): form = NameForm() if form.validate_on_submit(): session['name'] = form.name.data return redirect(url_for('index')) return render_template('index.html', form=form, name=session.get('name'))如您所见, form.name.data = ''行用于清除第一个版本中的输入字段,但在第二个版本中不需要它。 我以为Flask-WTF会自动将StringField的文本传递给新的form实例,但由于某些原因,它没有。
我的问题是:为什么当我使用PRG时,不同请求之间的form.name.data不再可用?
The view function of my toy app was:
@app.route('/', methods=['GET', 'POST']) def index(): name = None form = NameForm() if form.validate_on_submit(): name = form.name.data form.name.data = '' return render_template('index.html', form=form, name=name)And it looks like this when I use PRG:
@app.route('/', methods=['GET', 'POST']) def index(): form = NameForm() if form.validate_on_submit(): session['name'] = form.name.data return redirect(url_for('index')) return render_template('index.html', form=form, name=session.get('name'))As you can see, the form.name.data = '' line is used to clear the input field in the first version, but it's not needed in the second version. I thought Flask-WTF would automatically pass the text in StringField into the new form instance, but for some reasons, it didn't.
My question is: Why form.name.data is no longer available between different requests when I use PRG?
最满意答案
它无法在重定向上传递任何内容,因为它是一个全新的请求。
It can't pass anything on a redirect, as it is a completely new request.
更多推荐
发布评论