Переменная сеанса Flask для WTForms

Я сталкиваюсь с ошибками при попытке передать переменную сеанса Flask в WTForms. Я прочитал все по теме через поиски и документацию, но правильный метод мне не ясен. Я совершенно новичок в веб-разработке, и я уверен, что есть определенные концепции, которые я еще не понимаю.

users_department — это переменная сеанса Flask, которая используется для заполнения формы WTForm, которая перечисляет project_lead в wtforms.SelectField. Однако я получаю сообщение об ошибке при вызове переменной сеанса Flask, RunTimeError: работает вне контекста запроса.

Ниже мой код.

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()])

person user3388722    schedule 10.07.2014    source источник


Ответы (1)


Я понял, как это исправить. Не вызывайте сеанс flask после вызова WTforms. Ниже приведена часть, которую необходимо изменить.

@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)
person user3388722    schedule 10.07.2014