锋哥原创的Flask3 Python Web开发 Flask3视频教程:
2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili
为了能够在模板中渲染表单,我们需要把表单类实例传入模板。首先在视图函数里实例化表单类LoginForm,然后在render_template()函数中使用关键字参数form将表单实例传入模板,user.py
@user_bp.route('/login')
def login():
loginForm = LoginForm()
print("标签:", loginForm.username.label)
print("表单", loginForm.username)
return render_template('login.html', form=loginForm)
login.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<form action="login" method="post">
{{ form.csrf_token }}
<table>
<tr>
<td>
{{ form.username.label }}:
</td>
<td>
{{ form.username }}
</td>
</tr>
<tr>
<td>
{{ form.password.label }}:
</td>
<td>
{{ form.password }}
</td>
</tr>
<tr>
<td colspan="2">
{{ form.remember.label }}:{{ form.remember }}
</td>
</tr>
<tr>
<td>
{{ form.submit }}
</td>
</tr>
</table>
</form>
</body>
</html>
运行测试:
后端login()视图函数改下,接收post请求:
@user_bp.route('/login', methods=['GET', 'POST'])
def login():
print(request.method)
loginForm = LoginForm()
print("标签:", loginForm.username.label)
print("表单", loginForm.username)
if request.method == 'GET':
return render_template('login.html', form=loginForm)
else:
username = loginForm.username.data
password = loginForm.password.data
print(username, password)
return 'ok'