Flask_Security 的 FlaskWTFDeprecationWarning

FlaskWTFDeprecationWarning with Flask_Security

我每次使用 Flask Security 时都会收到警告。

FlaskWTFDeprecationWarning: "flask_wtf.Form" has been renamed to "FlaskForm" 
and will be removed in 1.0.

这是 Flask 安全问题还是我可以自己解决的问题?我正在使用 Flask-Security==1.7.5

from flask_security import current_user, login_required, RoleMixin, Security, \
SQLAlchemyUserDatastore, UserMixin, utils

我好像没有直接导入Flask_WTF

看起来 1.7.5 是 Fl​​ask-Security 的最新版本。 Flask-WTF 的最新版本是 0.13(通过检查 pip freeze 确保你已经安装)。

由于您不直接使用 Flask-WTF,问题不在于您的代码。问题来自 Flask-Security 的代码本身,which has Flask-WTF as a dependency.

Flask-Security 从 Flask-WTF 导入表单 class 的方式已被弃用,因此您在 运行s:

这行时看到错误
from flask_wtf import Form as BaseForm

https://github.com/mattupstate/flask-security/blob/e01cd63a214969cf8e4ee800d398e1c43b460c7f/flask_security/forms.py#L15

您可以在 Flask-Security 上提出一个问题(随时 link 这个问题)或者自己向作者提交一个拉取请求,将这一行更新为未弃用的导入

from flask_wtf import FlaskForm as BaseForm

确保在提交之前/之后进行 运行 测试。

对于更多上下文,您可以使用 git blame 查看最后一次更改 Flask-Security (6f68f1d) 中已弃用的导入行的提交,时间是 2013 年 8 月 15 日。

在 Flask-WTF 上做同样的事情,你可以看到弃用是在 2016 年 6 月 30 日 42cc475 中引入的。

我的回答不是您的具体情况所固有的。但是,当我们编写此代码时会出现相同的警告消息:

from flask_wtf import Form

要解决此问题,您应该使用 FlaskForm 代替 Form:

from flask_wtf import FlaskForm

这在 GitHub 上突出显示,我只想在这里分享解决方案,以帮助将来可能遇到它的任何最终实干家。