wtf validate_on_submit sessions flaskform fileallowed python session flask wtforms

python - validate_on_submit - ¿Cuál es la forma correcta de completar las selecciones de los datos de la sesión?



wtforms flask (1)

El código en una definición de clase se ejecuta en el momento de la importación, no cuando se crea una instancia de la clase. __init__ mover el acceso a la session al método __init__ para que se acceda a él cuando se crea un formulario en una función de vista.

class Institution(Form): organization = SelectField() def __init__(self, *args, **kwargs): self.organization.kwargs[''choices''] = [(x, x) for x in session.get(''city'', (''not set'',))] Form.__init__(self, *args, **kwargs)

Esto se aplica a todo lo que necesita una aplicación o contexto de solicitud, como una consulta de base de datos, no solo la session .

Estoy almacenando algunas variables en la sesión cuando el usuario inicia sesión, para usarlas más tarde para completar un campo.

from flask_wtf import Form from wtforms import SelectField from flask import session class InstitutionForm(Form): city = session[''city''] city_tuples = [(x, x) for x in city] organisation = SelectField( ''organisation'', choices=city_tuples ) class Institution(View): methods = [''POST''] def dispatch_request(self): form = InstitutionForm() return render_template( ''form/institution.html'', form=form)

Cuando ejecuto la aplicación, aparece el error "trabajando fuera del contexto de solicitud". ¿Cuál es la manera correcta de poblar este campo de los datos de la sesión?