首页 > 解决方案 > 在 FLASK 中使用 WTForms 时在两个类之间进行更改

问题描述

我正在尝试使用烧瓶创建一个简单的博客应用程序。这个应用程序有一个登录和一个注册页面。

我指定了它使用的形式如下:

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, BooleanField
from wtforms.validators import DataRequired, Length, Email, EqualTo

class RegistrationForm(FlaskForm):
    username = StringField('Username: ', 
                validators=[DataRequired(), Length(min=2, max=20)])
    email = StringField('Email: ',
                validators=[DataRequired(), Email()])
    password = PasswordField('Password: ',
                validators=[DataRequired()])
    confirm_password = PasswordField('Confirm Password: ',
                validators=[DataRequired(), EqualTo('password')])
    submit = SubmitField('Sign Up')

class LoginForm(FlaskForm):
    email = StringField('Email',
                validators=[DataRequired(), Email()])
    password = PasswordField('Password',
                validators=[DataRequired()])
    remember = BooleanField('Remember me?')
    submit = SubmitField('Login')

例如,当我尝试调用表单时:

<div class="form-group">
                {{ form.password.label(class="form-control-label") }}
                {{ form.password }}
   </div>

它总是会调用 RegistrationForm 类。

我想在我的 LoginForm 中使用 ''' {{ form.remember }} '''。但是我收到错误消息:

“forms.RegistrationForm 对象”没有属性“Loginform”

我如何告诉 WTforms 在 LoginForm 中查找?

标签: flaskflask-wtforms

解决方案


定义路由时需要传入 login.html 页面中使用的表单。

@app.route("/login", methods=['GET', 'POST'])
def login():
    form = LoginForm()
return render_template('login.html', title='Login', form=form)

推荐阅读