【发布时间】:2022-01-02 10:28:13
【问题描述】:
我发现这个问题以各种方式提出略有不同,但答案似乎陈旧或不完全符合我的要求。 我有一个功能正常的 Flask 应用程序,带有 Flask-Security 和一些 WTF 表单。用户可以登录,填写表格等等,一切都很好。
现在,我需要在创建表单时访问用户设置(衬衫尺寸),以便在用户填写表单时将其显示给用户(因此这不是验证问题)。
我添加到表单文件中:
from flask_security import current_user
访问设置current_user.ts_size,但我面临 AttributeError: 'NoneType' object has no attribute 'ts_size'
我知道这意味着 current_user 是 NoneType,问题是为什么?我在定义视图的文件中使用相同的导入行,没有任何问题。视图用auth_required 装饰,因此当需要创建表单并将其显示给用户时,它已经检查了用户是否已通过身份验证。
我错过了什么?
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired
from flask_security import current_user
class JacketForm(FlaskForm):
material = StringField(validators=[DataRequired()],)
size = StringField(validators=[DataRequired()], description=current_user.ts_size)
【问题讨论】:
-
谢谢。看完之后,我不确定它是否能回答我的问题。在我看来,它正在解决维护自定义 current_user 的一般问题。 current_user 在我的应用程序中工作没有任何问题。我可能错了,但对我来说问题可能是在创建表单对象时访问 current_user 的应用程序实例。我想“工厂”表单是在会话之外生成的,所以用户是无,所以在会话中调用时,它仍然是无。
标签: python flask flask-wtforms flask-security