Flask会话变量传递给WTForms
我在尝试把Flask的会话变量传递给WTForms时遇到了错误。我查阅了很多资料和文档,但还是不太明白正确的方法是什么。我对网页开发完全是个新手,肯定有一些概念我还没搞清楚。
users_department是一个Flask的会话变量,用来填充一个WTForm,这个表单里有一个选择框(wtforms.SelectField),列出了项目负责人。但是,当我调用这个Flask会话变量时,出现了一个错误:RunTimeError: working outside of request context。
下面是我的代码。
import wtforms
import flask
def get_team_members():
user_department = flask.session.get('user_department')
# run SQLite query to find team members based on the variable user_department
# create a list from the SQLite results
return team_results
@app.route('/manage', methods=['GET', 'POST'])
def manage():
form = ProjectForm(request.form) #Call the project form to display
#The line below causes the error but it works if hard coded with a department
form.project_lead.choices = get_team_members() #Get team members for user
return render_template('manage.html', form = form)
class ProjectForm(wtforms.Form):
project_lead = wtforms.SelectField(u'Project Lead',
validators=[wtforms.validators.optional()])
1 个回答
1
我找到了修复的方法。不要在调用WTforms之后再调用flask的会话。下面是需要修改的部分。
@app.route('/manage', methods=['GET', 'POST'])
def manage():
team = get_team_members() #Get team members for user
form = ProjectForm(request.form) #Call the project form to display
form.project_lead.choices = team
return render_template('manage.html', form = form)