这个视图函数在Python中使用Flask框架做什么?

2024-09-26 18:18:06 发布

您现在位置:Python中文网/ 问答频道 /正文

class NameForm(FlaskForm):
    name=StringField('What is your name?', validators=[Required()])
    submit=SubmitField('Submit')

@app.route('/', methods=['GET', 'POST'])
def index():
    form=NameForm()
    # print(form.name.data)
    if form.validate_on_submit():
        session['name']=form.name.data
        # form.name.data=''
        # print('post')
        return redirect(url_for('index'))
    # print('get')
    return render_template('index.html', form=form, name=session.get('name'))

据我所知,无论我是否发送post或get请求,index()函数将始终运行这行代码form=NameForm(),其中form将被分配给一个新值

但是,当我点击submit时,发送到服务器的post请求会采用表单数据,即使在form函数的第一行已将index()分配给新值时,该数据仍会保留


Tags: 数据函数nameformdatagetindexreturn
1条回答
网友
1楼 · 发布于 2024-09-26 18:18:06

正如您所注意到的,每次调用index都会导致创建一个新的form实例

我不确定我是否理解了这个问题,所以我在猜测一个可能的困惑来源

在封面下,FlaskForm子类知道flask请求,如果是POST、PUT、PATCH或DELETE,则将从请求填充实例。所以当index

form=NameForm()

如果是GET,form将为空,如果是POST,form将包含提交的数据

如果您想知道这种意识是如何工作的,请参阅https://github.com/lepture/flask-wtf/blob/master/flask_wtf/form.py#L54,其中flask-wtf覆盖wtforms中的方法以提供特定于烧瓶的行为

相关问题 更多 >

    热门问题