目前在写一个登录界面,但是后端写的form传不到前端
访问路由/register,前端并没有完全被register渲染,在templates下的register.html文件可以继承其他html的内容,但是却没有form
class RegisterForm(FlaskForm):
username = StringField('请输入你的名字', validators=[DataRequired()])
# id = StringField('ID', validators=[DataRequired()])
password = PasswordField('请输入你的密码',validators=[DataRequired()])
password2 = PasswordField(label=u'确认密码', validators=[DataRequired(u"确认密码不能为空!"), EqualTo('password', u"两次密码不一致!")])
email = EmailField('请输入你的邮箱',validators=[DataRequired()])
submit = SubmitField('提交')
@app.route('/register', methods=['POST', 'GET'])
def register():
form = RegisterForm()
if form.validate_on_submit():
username = form.username.data
email = form.email.data
password = form.password.data
newuser = UserInfo(username=username, password=password, email=email)
db.session.add(newuser)
db.session.commit()
# flash('恭喜你,注册成功!!!开始登录!!ヾ(●´∇`●)ノ哇~')
return redirect(url_for('index'))
return render_template('register.html', form=form)
{% extends 'base.html' %}
{% import 'bootstrap/wtf.html' as wtf %}
{% block page_content %}
<div class="page-header">
<h3>Welcome To Registerh3>
div>
<form method="POST">
{{form.hidden_tag()}}
{{wtf.quick_form(form)}}
form>
<br>
{% endblock %}
运行之后
我在if form.validate_on_submit(): 上面print(‘1’),可以打印;但是在if form.validate_on_submit():下面却打印不出来。而且也不报错
请问有什么解决办法吗
我希望可以在前端/register下显示出form
由ChatGPT提供解答
在访问路由/register时,前端没有完全被register渲染,可能是因为在视图函数register中没有正确的处理请求和渲染模板。
首先,您可以在register函数中添加一个判断,如果是GET请求,就直接渲染模板;如果是POST请求,就处理表单提交的数据,然后根据处理结果来决定是否重定向到其他页面。
具体的,您可以这样写:
@app.route('/register', methods=['POST', 'GET'])
def register():
form = RegisterForm()
if request.method == 'POST':
if form.validate_on_submit():
# 处理表单提交的数据
username = form.username.data
email = form.email.data
password = form.password.data
newuser = UserInfo(username=username, password=password, email=email)
db.session.add(newuser)
db.session.commit()
# 重定向到其他页面
return redirect(url_for('index'))
return render_template('register.html', form=form)
另外,您的模板register.html中需要使用Flask-WTF的quick_form方法来渲染表单,否则表单可能无法正常工作。
例如:
{% extends 'base.html' %}
{% import 'bootstrap/wtf.html' as wtf %}
{% block page_content %}
<div class="page-header">
<h3>Welcome To Register</h3>
</div>
<form method="POST">
{{ form.hidden_tag() }}
{{ wtf.quick_form(form) }}
</form>
<br>
{% endblock %}
希望这些能够帮助您