Flask项目中导入FlaskForm时出现ImportError错误求助
Flask-WTF导入Flaskform报错的解决方法
在Flask项目中,尝试从flask_wtf导入Flaskform时触发ImportError,报错提示无法从'flask_wtf'中导入名称'Flaskform'。
报错回溯
Traceback (most recent call last): File "c:\Users\lenovo\OneDrive\Desktop\digifit\login.py", line 1, in from flask_wtf import Flaskform ImportError: cannot import name 'Flaskform' from 'flask_wtf' (C:\Users\lenovo\OneDrive\Desktop\digifit\env\Lib\site-packages\flask_wtf\__init__.py)
相关代码
表单文件(login.py)
from flask_wtf import Flaskform from wtforms import StringField,PasswordField,SubmitField,BooleanField from wtforms.validators import DataRequired,Length,EqualTo class RegistrationForm(Flaskform): username = StringField('Username',validators=[DataRequired(),Length(min=2,max=20)]) password = PasswordField('Password',validators=[DataRequired()]) confirm_password = PasswordField(' Confirm Password',validators=[DataRequired(),EqualTo('password')]) submit = SubmitField('Sign Up') class LoginForm(Flaskform): username = StringField('Username',validators=[DataRequired(),Length(min=2,max=20)]) password = PasswordField('Password',validators=[DataRequired()]) remember = BooleanField("Remember Me") submit = SubmitField('LOGIN')
项目主文件(app.py)
from flask import Flask,render_template,request from flask_sqlalchemy import SQLAlchemy from login import RegistrationForm,LoginForm #media for the project import os prerna = os.path.join('static','pic.png') prerna2 = os.path.join('static','Untitled.png') prerna3 = os.path.join('static','wardrobe.png') video = os.path.join('static','DigitalWardrobe.mp4') prerna4 = os.path.join('static','BUUTON.png') prerna5 = os.path.join('static','start.png') prerna6=os.path.join('static','home.jpeg') #create flask app app = Flask(__name__) #Database connenction app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///loginForm.db' app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False app.config['SECRET_KEY'] = 'f79e06501f31fae1c771ee83cc8c3868' #initialize the database db = SQLAlchemy(app) '''class is the table created in the database''' class loginForm(db.Model): id = db.Column(db.Integer(), primary_key=True) username = db.Column(db.String(100), unique=True, nullable=False) password = db.Column(db.String(8), unique=True, nullable=False) def __repr__(self): return '<Name %r>' % self.id with app.app_context(): db.create_all() #path for the pages @app.route('/') def index(): return render_template("index.html",img = prerna2,img1 = prerna,img2 = prerna3,vid=video) @app.route('/home') def home() : return render_template("home.html",title='home',button=prerna4,home=prerna6) @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(login.html,title='login',form=form) @app.route("/createyourcloset") def createyourcloset(): return render_template("createyourcloset.html",start=prerna5) @app.route("/opennewcloset") def opennewcloset(): return render_template("opennewcloset.html") if __name__=="__main__": app.run(debug=True)
修复步骤
1. 修正类名大小写错误
Flask-WTF的表单基类正确名称是FlaskForm(最后一个字母为大写F),代码中写成小写Flaskform导致导入失败,需修改两处:
- 修改login.py中的导入语句:
from flask_wtf import FlaskForm # 替换原Flaskform - 修改表单类的继承:
class RegistrationForm(FlaskForm): # 替换Flaskform # ... 其余代码不变 class LoginForm(FlaskForm): # 替换Flaskform # ... 其余代码不变
2. 修复app.py中的其他错误
register路由中render_template的参数错误:register.html需添加引号,改为:return render_template("register.html",title='Register',form=form)login路由中实例化了数据库模型loginForm,而非表单类LoginForm,需修正:@app.route('/login') def login(): form = LoginForm() # 使用表单类LoginForm return render_template("login.html",title='login',form=form)
内容的提问来源于stack exchange,提问作者Prerna
相关产品推荐
相关产品推荐

