在烧瓶中发布/重定向/获取模式 [英] Post/Redirect/Get pattern in flask

查看:104
本文介绍了在烧瓶中发布/重定向/获取模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的玩具应用程序的查看功能是:

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)

当我使用PRG时,它看起来像这样:

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'))

如您所见,form.name.data = ''行用于在第一个版本中清除输入字段,但在第二个版本中则不需要.我以为Flask-WTF会自动将StringField中的文本传递到新的form实例中,但是由于某些原因,它没有.

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.

我的问题是:为什么在使用PRG时,不同请求之间的form.name.data不再可用?

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.

这篇关于在烧瓶中发布/重定向/获取模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆