使用Flask_Security进行FlaskWTFDeprecationWarning

时间:2016-09-29 23:42:05

标签: python flask flask-security

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

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

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

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

我似乎没有直接导入Flask_WTF。

2 个答案:

答案 0 :(得分:8)

看起来1.7.5是Flask-Security的最新版本。 Flask-WTF的最新版本是0.13(确保通过检查pip freeze安装了它。)

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

Flask-Security从Flask-WTF导入Form类的方式已弃用,因此您在此行运行时会看到错误:

from flask_wtf import Form as BaseForm

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

你可以在Flask-Security上打开一个问题(随意链接到这个问题)或者自己向作者提交拉取请求,将此行更新为不推荐使用的导入

from flask_wtf import FlaskForm as BaseForm

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

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

在Flask-WTF上执行相同操作,您可以看到2016年6月30日42cc475中引入了弃用。

答案 1 :(得分:7)

我的回答是固有的确切情况。但是,当我们对此进行编码时会出现相同的警告消息:

from flask_wtf import Form

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

from flask_wtf import FlaskForm

这在GitHub上突出显示,我只是想在此处分享解决方案,以帮助将来可能面临的任何最终行动者。