我是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,
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()的最后一步呈现(显示在浏览器上)。从逻辑上讲,必须首先在浏览器上显示它,以便用户可以填写数据。显然,我缺少一些非常基本的东西。有人可以帮我理解这里的逻辑。谢谢
答案 0 :(得分:1)
让我们回顾一下用户访问/register
时发生的情况:
[Enter]
GET
请求。/register
路线。request.method
是GET
,因此生成了form
(尽管未填写)。if request.method == 'POST' and form.validate():
块无法运行。[Send]
按钮。POST
请求,并附加了所有字段的值。/register
端点,因为它也接受POST
请求。if
块,并且如果表单有效,则生成用户,并且flask重定向用户。 我希望这能消除您的困惑。