Forms 模板渲染中的逻辑
我是Python和flask的新手。我正在查看以下代码:Forms 模板渲染中的逻辑,forms,flask,Forms,Flask,我是Python和flask的新手。我正在查看以下代码: @app.route('/register', methods=['GET', 'POST']) def register(): form = RegistrationForm(request.form) if request.method == 'POST' and form.validate(): user = User(form.username.data, form.email.data,
@app.route('/register', methods=['GET', 'POST'])
def register():
form = RegistrationForm(request.form)
if request.method == 'POST' and form.validate():
user = User(form.username.data, form.email.data,
form.password.data)
db_session.add(user)
flash('Thanks for registering')
return redirect(url_for('login'))
return render_template('register.html', form=form)
register.html作为register()中的最后一步呈现(在浏览器上显示)。从逻辑上讲,它必须首先显示在浏览器上,以便用户可以填写数据。显然,我遗漏了一些非常基本的东西。有人能帮我理解这里的逻辑吗。谢谢让我们看看当用户访问
/register
时会发生什么:
[输入]
GET
请求/register
路由request.method
是GET
,所以生成了form
(虽然没有填写)。如果request.method==“POST”和form.validate():
块不运行,因为方法不同。因此flask呈现模板并发送HTML
[Send]
按钮。浏览器这次发出一个
POST
请求,所有字段的值都附加到该请求上/register
端点,因为它也接受POST
请求if
块运行,并且如果表单有效,则生成用户并重定向用户李>
我希望这能消除你的困惑。现在整个事情都讲得通了。感谢abdusco的详细解释。