You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask-WTF 1.0.1无法导入CsrfProtect的问题求助

问题描述

更新Python项目依赖后出现导入错误:

ImportError: cannot import name 'CsrfProtect' from 'flask_wtf.csrf'

相关细节

requirements.txt

Flask-WTF==1.0.1

extensions.py代码

from flask_wtf.csrf import CsrfProtect
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager

debug_toolbar = DebugToolbarExtension()
mail = Mail()
csrf = CsrfProtect()
db = SQLAlchemy()
login_manager = LoginManager()

错误追踪

website_1   |   File "/smartcowz/smartcowz/blueprints/user/models.py", line 17, in <module>
website_1   |     from lib.util_sqlalchemy import ResourceMixin, AwareDateTime
website_1   |   File "/smartcowz/lib/util_sqlalchemy.py", line 7, in <module>
website_1   |     from smartcowz.extensions import db
website_1   |   File "/smartcowz/smartcowz/extensions.py", line 5, in <module>
website_1   |     from flask_wtf.csrf import CsrfProtect
website_1   | ImportError: cannot import name 'CsrfProtect' from 'flask_wtf.csrf'   
(/usr/local/lib/python3.8/site-packages/flask_wtf/csrf.py)

已尝试调整导入路径(从wtf改为wtf.csrf)但无效,需要无需降级版本的解决方案,避免依赖循环。


解决方案

Flask-WTF 1.0.0及后续版本中,原CsrfProtect类已被重命名为**CSRFProtect**(首字母大写),这是导致导入失败的直接原因。

修改extensions.py中的导入与实例化代码即可解决问题:

# 替换原导入语句,使用大写的CSRFProtect
from flask_wtf.csrf import CSRFProtect
# 也可直接从flask_wtf包导入:from flask_wtf import CSRFProtect

from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager

debug_toolbar = DebugToolbarExtension()
mail = Mail()
# 实例化大写的CSRFProtect类
csrf = CSRFProtect()
db = SQLAlchemy()
login_manager = LoginManager()

该改动完全兼容Flask-WTF 1.0.1版本,无需降级依赖,也不会引入新的依赖循环问题。

内容的提问来源于stack exchange,提问作者m2e

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:15:27