首页 > 解决方案 > Flask Python NameError:未定义名称'Flaskform'

问题描述

您好,我是 Flask 和 Python 的新手,并且在未定义 FlaskForm 时遇到了这个小问题。我的 Flask-WTF 版本应该是:Flask-WTF-0.14.3

这是我的flaskapp.py ( main )

from flask import Flask, render_template, url_for, flash, redirect
from forms import RegistrationForm, LoginForm

app = Flask(__name__)

app.config["SECRET_KEY"] = "654564ASDAD4646546545487"

posts = [
   {
        "author": "Corey Schafer",
        "title": "Blog Post 1",
        "content": "First post content",
        "date_posted": "April 20, 2019",   
    },
   {
       "author": "Reboot My Computer",
       "title": "Blog Post 2",
       "content": "Loremipsum poasdd lorem pipsadiasdum ploremasd ipdism lrt",
       "date_posted": "Unor 20, 1998",
       
    }
]

@app.route('/')
@app.route("/home")
def home():
    return render_template('home.html',posts=posts)

@app.route("/about")
def about():
    return render_template('about.html', title="About")

@app.route("/register")
def register():
    form = RegistrationForm()
    return render_template('register.html', title="Register", form=form)

@app.route("/login")
def login():
    form = LoginForm()
    return render_template('register.html', title="Register", form=form)



if __name__ == "__main__":
    app.run(debug=True)

这是我的forms.py

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=[DataRequied(), Length(ming=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("Sign Up")
   

这就是我在控制台中得到的:

class RegistrationForm(Flaskform):

NameError: name 'Flaskform' is not defined```

我不确定为什么会发生这种情况,有什么建议吗?提前感谢您的宝贵时间。

标签: pythonflask

解决方案


问题是您正在导入from flask_wtf import FlaskForm

但在表单中,您使用Flaskform的是 FlaskForm。

forms.py应该是这样的:

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=[DataRequied(), Length(ming=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("Sign Up")

推荐阅读