Flask WT表格中的加入会话对象

Flask WT表格中的加入会话对象,flask,wtforms,flask-wtforms,Flask,Wtforms,Flask Wtforms,我试图根据组织id填充角色,但WT表单似乎不支持会话 view.py 用户表单.py 文件“C:\Users\dell\Envs\surveyApp\lib\site packages\flask\globals.py”,第20行,在查找请求中 对象 引发运行时错误('在请求上下文之外工作') 运行时错误:在请求上下文之外工作,正如blender所说,您不能以这种方式使用会话。我能想到的唯一方法是在视图中使用会话,并在呈现模板时发送必要的数据 view.py @users.route('/',

我试图根据组织id填充角色,但WT表单似乎不支持会话

view.py 用户表单.py
文件“C:\Users\dell\Envs\surveyApp\lib\site packages\flask\globals.py”,第20行,在查找请求中 对象 引发运行时错误('在请求上下文之外工作')
运行时错误:在请求上下文之外工作,正如blender所说,您不能以这种方式使用会话。我能想到的唯一方法是在视图中使用会话,并在呈现模板时发送必要的数据

view.py

@users.route('/', methods=['GET', 'POST'])
@users.route('/manage', methods=['GET', 'POST'])
@login_required
def manage_users():
    form = User_Form()
    form.organization_id.data = session['user_id']
    return render_template('account/manage_users.html', form=form)
并在表单中将“organization_id”标记为文本字段:

class User_Form(Form, session):
    # Other fields
    organization_id = TextField()

希望它能帮助您。

这里的技巧是根据视图中的逻辑设置选项:

def manage_users():
    form = User_Form()
    if session['user_id'] == 1:
        form.role.choices = [('Role1', 'Label1'), ('Role2', 'Label2')]
    else:
        form.role.choices = [...]
    if form.validate():
        ...

    return render_template('account/manage_users.html', form=form)
只要在调用
validate()


有关参考信息,请参见WTForms文档。

您不能像那样从
会话继承。如果您已经可以通过会话变量访问
organization\u id
字段,那么该字段的用途是什么?应用程序注册了多个组织,每个组织可以创建自己的角色,从而为单个组织创建不同的角色列表。在创建用户时,我希望organization id列出该组织的相应角色。
class User_Form(Form, session):
    # Other fields
    organization_id = TextField()
def manage_users():
    form = User_Form()
    if session['user_id'] == 1:
        form.role.choices = [('Role1', 'Label1'), ('Role2', 'Label2')]
    else:
        form.role.choices = [...]
    if form.validate():
        ...

    return render_template('account/manage_users.html', form=form)