在flask下写注册页面遇到了后端的内容传递不到前端

问题遇到的现象和发生背景

目前在写一个登录界面,但是后端写的form传不到前端

遇到的现象和发生背景,请写出第一个错误信息

访问路由/register,前端并没有完全被register渲染,在templates下的register.html文件可以继承其他html的内容,但是却没有form

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
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 %}

运行结果及详细报错内容

运行之后

img


以及

img

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

我在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 %}

希望这些能够帮助您