这段python代码有什么问题,它给出了以下错误:UnboundLocalError:localvariable';用户';分配前参考 来自烧瓶\ wtf进口烧瓶表单 从flask_登录导入当前_用户 从wtforms导入StringField、PasswordField、SubmitField 从wtforms.validators导入所需数据、长度、相等 从Flaskfile.models导入用户 班级登记表(烧瓶表): username=StringField('username',验证器=[DataRequired(),长度(最小值=2,最大值=20)]) email=StringField('email',验证器=[DataRequired()])) password=PasswordField('password',验证器=[DataRequired()]) 确认\u password=PasswordField('Confirm password',validator=[DataRequired(),EqualTo('password')) 提交=提交字段(“注册”) #请记住包含验证错误消息 类别登录表单(烧瓶表单): “”“LoginForm的文档字符串”“” email=StringField('email',验证器=[DataRequired()])) password=PasswordField('password',验证器=[DataRequired()]) submit=SubmitField('Login') # 类UpdateAccountForm(瓶形): username=StringField('username',验证器=[DataRequired(),长度(最小值=2,最大值=20)]) email=StringField('email',验证器=[DataRequired()])) submit=SubmitField(‘更新’) def验证_用户名(self,username): 如果username.data!=当前_user.username: user=user.query.filter_by(username=username.data).first() 如果用户: 引发validationError('该用户已被接收') def验证_电子邮件(自我,电子邮件): 如果email.data!=当前用户电子邮件: user=user.query.filter_by(username=email.data).first() 如果用户: 引发validationError('该用户已被接收')

这段python代码有什么问题,它给出了以下错误:UnboundLocalError:localvariable';用户';分配前参考 来自烧瓶\ wtf进口烧瓶表单 从flask_登录导入当前_用户 从wtforms导入StringField、PasswordField、SubmitField 从wtforms.validators导入所需数据、长度、相等 从Flaskfile.models导入用户 班级登记表(烧瓶表): username=StringField('username',验证器=[DataRequired(),长度(最小值=2,最大值=20)]) email=StringField('email',验证器=[DataRequired()])) password=PasswordField('password',验证器=[DataRequired()]) 确认\u password=PasswordField('Confirm password',validator=[DataRequired(),EqualTo('password')) 提交=提交字段(“注册”) #请记住包含验证错误消息 类别登录表单(烧瓶表单): “”“LoginForm的文档字符串”“” email=StringField('email',验证器=[DataRequired()])) password=PasswordField('password',验证器=[DataRequired()]) submit=SubmitField('Login') # 类UpdateAccountForm(瓶形): username=StringField('username',验证器=[DataRequired(),长度(最小值=2,最大值=20)]) email=StringField('email',验证器=[DataRequired()])) submit=SubmitField(‘更新’) def验证_用户名(self,username): 如果username.data!=当前_user.username: user=user.query.filter_by(username=username.data).first() 如果用户: 引发validationError('该用户已被接收') def验证_电子邮件(自我,电子邮件): 如果email.data!=当前用户电子邮件: user=user.query.filter_by(username=email.data).first() 如果用户: 引发validationError('该用户已被接收'),python,Python,这可能是由于缩进不当造成的。试试这个 from flask_wtf import FlaskForm from flask_login import current_user from wtforms import StringField, PasswordField, SubmitField from wtforms.validators import DataRequired, Length, EqualTo from Flaskfile.models import user class R

这可能是由于缩进不当造成的。试试这个

from flask_wtf import FlaskForm
from flask_login import current_user
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Length, EqualTo
from Flaskfile.models import user
class RegistrationForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired(),  Length(min=2, max=20)])
    email = StringField('email', validators=[DataRequired()])
    password = PasswordField('password', validators=[DataRequired()])
    Confirm_password= PasswordField('Confirm password', validators=[DataRequired(), EqualTo('password')])
    submit=  SubmitField('Sign up')
#remember to include validation error messge

class LoginForm(FlaskForm):
    """docstring for LoginForm"""
    email = StringField('Email', validators=[DataRequired() ])
    password = PasswordField('Password', validators=[DataRequired()])
    submit=  SubmitField('Login')


# <!-- #setting up the update account form -->
class UpdateAccountForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired(),  Length(min=2, max=20)])
    email = StringField('email', validators=[DataRequired()])
    submit=  SubmitField('Update')

    def validate_username(self, username):
        if username.data != current_user.username:
            user=user.query.filter_by(username=username.data).first()
        if user:
                raise validationError('That user is taken')

    def validate_email(self, email):
        if email.data != current_user.email:
            user=user.query.filter_by(username=email.data).first()
            if user:
                raise validationError('That user is taken')

来自flask_wtf进口FlaskForm
从flask_登录导入当前_用户
从wtforms导入StringField、PasswordField、SubmitField
从wtforms.validators导入所需数据、长度、相等
从Flaskfile.models导入用户
班级登记表(烧瓶表):
username=StringField('username',验证器=[DataRequired(),长度(最小值=2,最大值=20)])
email=StringField('email',验证器=[DataRequired()]))
password=PasswordField('password',验证器=[DataRequired()])
确认\u password=PasswordField('Confirm password',validator=[DataRequired(),EqualTo('password'))
提交=提交字段(“注册”)
#请记住包含验证错误消息
类别登录表单(烧瓶表单):
“”“LoginForm的文档字符串”“”
email=StringField('email',验证器=[DataRequired()]))
password=PasswordField('password',验证器=[DataRequired()])
submit=SubmitField('Login')
# 
类UpdateAccountForm(瓶形):
username=StringField('username',验证器=[DataRequired(),长度(最小值=2,最大值=20)])
email=StringField('email',验证器=[DataRequired()]))
submit=SubmitField(‘更新’)
def验证_用户名(self,username):
如果username.data!=当前_user.username:
user=user.query.filter_by(username=username.data).first()
如果用户:
引发validationError('该用户已被接收')
def验证_电子邮件(自我,电子邮件):
如果email.data!=当前用户电子邮件:
user=user.query.filter_by(username=email.data).first()
如果用户:
引发validationError('该用户已被接收')

如果您的
如果username.data…
不是以您的
结尾,则永远不会定义
用户。与
if email.data…
相同,错误说明了一切,在你的函数
validate\u username
中,如果第一个条件没有验证,那么用户变量没有定义,你最好像在
validate\u email
函数中那样缩进它。这是否回答了你的问题?

from flask_wtf import FlaskForm
from flask_login import current_user
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Length, EqualTo
from Flaskfile.models import user
class RegistrationForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired(),  Length(min=2, max=20)])
    email = StringField('email', validators=[DataRequired()])
    password = PasswordField('password', validators=[DataRequired()])
    Confirm_password= PasswordField('Confirm password', validators=[DataRequired(), EqualTo('password')])
    submit=  SubmitField('Sign up')
#remember to include validation error messge

class LoginForm(FlaskForm):
    """docstring for LoginForm"""
    email = StringField('Email', validators=[DataRequired() ])
    password = PasswordField('Password', validators=[DataRequired()])
    submit=  SubmitField('Login')


# <!-- #setting up the update account form -->
class UpdateAccountForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired(),  Length(min=2, max=20)])
    email = StringField('email', validators=[DataRequired()])
    submit=  SubmitField('Update')

    def validate_username(self, username):
        if username.data != current_user.username:
            user=user.query.filter_by(username=username.data).first()
            if user:
                raise validationError('That user is taken')

    def validate_email(self, email):
        if email.data != current_user.email:
            user=user.query.filter_by(username=email.data).first()
            if user:
                raise validationError('That user is taken')