Python 如何从StringField分割数据

Python 如何从StringField分割数据,python,python-3.x,flask,split,flask-wtforms,Python,Python 3.x,Flask,Split,Flask Wtforms,我有一个登记表,用户可以把他们的名字,姓氏,电子邮件和密码。 我正在尝试获取该电子邮件并将其拆分以获取域并检查我的数据库,如果该电子邮件已注册,但我无法拆分数据,无论我做了什么更改,我都会不断收到不同的错误 forms.py class RegistrationForm(FlaskForm): first_name = StringField( "First Name", validators=[DataRequired(), Length(min=2

我有一个登记表,用户可以把他们的名字,姓氏,电子邮件和密码。 我正在尝试获取该电子邮件并将其拆分以获取域并检查我的数据库,如果该电子邮件已注册,但我无法拆分数据,无论我做了什么更改,我都会不断收到不同的错误

forms.py

class RegistrationForm(FlaskForm):
    first_name = StringField(
        "First Name", validators=[DataRequired(), Length(min=2, max=20)]
    )
    last_name = StringField(
        "Last Name", 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")

    # Here i'm trying to split the email so I can use the domain.
    domain = email.split("@")[1]

    def validate_email(self, email, domain):
        user_email = User.query.filter_by(email=email.data).first()
        org_domain = Organization.query.filter_by(domain=domain.data).first()
        if user_email:
            raise ValidationError("That email is taken. Please choose a different one.")
        elif org_domain:
            raise ValidationError(
                "Your domain is managed by someone else, please contact your administrator. If you need help please contact our support"
            )
routes.py

@users.route("/register", methods=["GET", "POST"])
def register():
    if current_user.is_authenticated:
        return redirect(url_for("main.dashboard"))
    form = RegistrationForm()
    if form.validate_on_submit():
        hashed_password = bcrypt.generate_password_hash(form.password.data).decode(
            "utf-8"
        )

        organization = Organization(
            domain=form.email.data.split("@")[1],
        )
        db.session.add(organization)
        db.session.commit()
        admin = User(
            first_name=form.first_name.data,
            last_name=form.last_name.data,
            display_name=form.first_name.data + " " + form.last_name.data,
            email=form.email.data,
            password=hashed_password,
            org_id=organization.id,
        )
        db.session.add(admin)
        db.session.commit()
        flash("Your account has been created! You are now able to log in", "success")
        return redirect(url_for("users.login"))
    return render_template("users/register.html", title="Register", form=form)

我通过在def validate_email(self,email)下拆分它使其工作:


你犯了什么错误?请不要让我们猜。为什么要用register()方法拆分它?我尝试了| domain=email.split(“@”)[0]”并且我得到了“UnboundField”对象没有属性“split”,我尝试了| domain=email.data.split(“@”)[0]”并且得到了“UnboundField”对象没有属性“data”,我还尝试放置了| domain=email.split(“@”)[1]| inside | def validate| email(self,email):|但我得到的“StringField”对象没有属性“split”
    domain = str(email).split("@")[1]
    domain = domain.split('"')[0]