API

Esta parte de la documentación cubre todas las interfaces de Flask. Para las partes en las que Flask depende de bibliotecas externas, documentamos las más importantes justo aquí y proporcionamos enlaces a la documentación canónica.

Objeto Application

class flask.Flask(import_name, static_url_path=None, static_folder='static', static_host=None, host_matching=False, subdomain_matching=False, template_folder='templates', instance_path=None, instance_relative_config=False, root_path=None)

El objeto flask implementa una aplicación WSGI y actúa como objeto central. Se le pasa el nombre del módulo o paquete de la aplicación. Una vez creado actuará como un registro central para las funciones de la vista, las reglas de la URL, la configuración de la plantilla y mucho más.

El nombre del paquete se utiliza para resolver los recursos de dentro del paquete o de la carpeta en la que está contenido el módulo, dependiendo de si el parámetro paquete resuelve a un paquete python real (una carpeta con un archivo __init__.py dentro) o a un módulo estándar (sólo un archivo .py).

Para más información sobre la carga de recursos, véase open_resource().

Normalmente creas una instancia Flask en tu módulo principal o en el archivo __init__.py de tu paquete así:

from flask import Flask
app = Flask(__name__)

Sobre el primer parámetro

La idea del primer parámetro es dar a Flask una idea de lo que pertenece a tu aplicación. Este nombre se utiliza para encontrar recursos en el sistema de archivos, puede ser utilizado por las extensiones para mejorar la información de depuración y mucho más.

Así que es importante lo que proporcione allí. Si estás usando un módulo único, __name__ es siempre el valor correcto. Sin embargo, si estás usando un paquete, normalmente se recomienda codificar el nombre de tu paquete allí.

Por ejemplo, si su aplicación está definida en yourapplication/app.py debe crearla con una de las dos versiones siguientes:

app = Flask('yourapplication')
app = Flask(__name__.split('.')[0])

¿Por qué? La aplicación funcionará incluso con __name__, gracias a cómo se buscan los recursos. Sin embargo, esto hará que la depuración sea más dolorosa. Algunas extensiones pueden hacer suposiciones basadas en el nombre de importación de tu aplicación. Por ejemplo, la extensión Flask-SQLAlchemy buscará el código en tu aplicación que ha lanzado una consulta SQL en modo de depuración. Si el nombre de importación no está bien configurado, esa información de depuración se pierde. (Por ejemplo, sólo recogerá las consultas SQL en tuaplicacion.app y no en tuaplicacion.views.frontend)

Changelog

Nuevo en la versión 1.0: Se han añadido los parámetros host_matching y static_host.

Nuevo en la versión 1.0: Se ha añadido el parámetro subdomain_matching. Ahora es necesario habilitar manualmente la coincidencia de subdominios. La configuración de SERVER_NAME no la activa implícitamente.

Nuevo en la versión 0.11: Se ha añadido el parámetro root_path.

Nuevo en la versión 0.8: Se han añadido los parámetros instance_path y instance_relative_config.

Nuevo en la versión 0.7: Se han añadido los parámetros static_url_path, static_folder y template_folder.

Parámetros
  • import_name (str) – el nombre del paquete de aplicaciones

  • static_url_path (Optional[str]) – se puede utilizar para especificar una ruta diferente para los archivos estáticos en la web. Por defecto, el nombre de la carpeta es static_folder.

  • static_folder (Optional[Union[str, os.PathLike]]) – La carpeta con archivos estáticos que se sirve en static_url_path. Relativo a la aplicación root_path o una ruta absoluta. El valor predeterminado es 'static.

  • static_host (Optional[str]) – el host que se utilizará al añadir la ruta estática. El valor predeterminado es None. Se requiere cuando se utiliza host_matching=True con una carpeta estática configurada.

  • host_matching (bool) – establece el atributo url_map.host_matching. Por defecto es False.

  • subdomain_matching (bool) – considerar el subdominio relativo a SERVER_NAME cuando se comparan las rutas. Por defecto es False.

  • template_folder (Optional[str]) – la carpeta que contiene las plantillas que debe utilizar la aplicación. Por defecto es la carpeta 'templates' en la ruta raíz de la aplicación.

  • instance_path (Optional[str]) – Una ruta de instancia alternativa para la aplicación. Por defecto, se asume que la carpeta instancia junto al paquete o módulo es la ruta de la instancia.

  • instance_relative_config (bool) – si se establece como True se asume que los nombres de archivos relativos para cargar la configuración son relativos a la ruta de la instancia en lugar de la raíz de la aplicación.

  • root_path (Optional[str]) – La ruta a la raíz de los archivos de la aplicación. Sólo debe establecerse manualmente cuando no pueda detectarse automáticamente, como en el caso de los paquetes de espacios de nombres.

aborter

Una instancia de aborter_class creada por make_aborter(). Es llamado por flask.abort() para lanzar errores HTTP, y también puede ser llamado directamente.

Nuevo en la versión 2.2: Movido de flask.abort, que llama a este objeto.

aborter_class

alias of werkzeug.exceptions.Aborter

add_template_filter(f, name=None)

Registra un filtro de plantilla personalizado. Funciona exactamente igual que el decorador template_filter().

Parámetros
  • name (Optional[str]) – el nombre opcional del filtro, de lo contrario se utilizará el nombre de la función.

  • f (Callable[[...], Any]) –

Tipo del valor devuelto

None

add_template_global(f, name=None)

Registra una función global de plantilla personalizada. Funciona exactamente igual que el decorador template_global().

Changelog

Nuevo en la versión 0.10.

Parámetros
  • name (Optional[str]) – el nombre opcional de la función global, de lo contrario se utilizará el nombre de la función.

  • f (Callable[[...], Any]) –

Tipo del valor devuelto

None

add_template_test(f, name=None)

Registra una prueba de plantilla personalizada. Funciona exactamente igual que el decorador template_test().

Changelog

Nuevo en la versión 0.10.

Parámetros
  • name (Optional[str]) – el nombre opcional de la prueba, de lo contrario se utilizará el nombre de la función.

  • f (Callable[[...], bool]) –

Tipo del valor devuelto

None

add_url_rule(rule, endpoint=None, view_func=None, provide_automatic_options=None, **options)

Registra una regla para enrutar las solicitudes entrantes y construir URLs. El decorador route() es un atajo para llamar a esto con el argumento view_func. Son equivalentes:

@app.route("/")
def index():
    ...
def index():
    ...

app.add_url_rule("/", view_func=index)

Véase Registros de rutas URL.

El nombre del endpoint de la ruta es por defecto el nombre de la función de la vista si no se pasa el parámetro endpoint. Se producirá un error si ya se ha registrado una función para el endpoint.

El parámetro methods es por defecto ["GET"]. El parámetro HEAD siempre se añade automáticamente, y OPTIONS se añade automáticamente por defecto.

view_func no necesita ser pasado, pero si la regla debe participar en el enrutamiento un nombre del endpoint debe ser asociado con una función de vista en algún momento con el decorador endpoint().

app.add_url_rule("/", endpoint="index")

@app.endpoint("index")
def index():
    ...

Si view_func tiene un atributo required_methods, esos métodos se añaden a los métodos pasados y automáticos. Si tiene el atributo provide_automatic_methods, se utiliza como método por defecto si no se pasa el parámetro.

Parámetros
Tipo del valor devuelto

None

after_request(f)

Registrar una función que se ejecute después de cada petición a este objeto.

La función se llama con el objeto response, y debe devolver un objeto response. Esto permite que las funciones modifiquen o sustituyan la respuesta antes de ser enviada.

Si una función lanza una excepción, cualquier función after_request restante no será llamada. Por lo tanto, esto no debe ser utilizado para las acciones que deben ejecutarse, como para cerrar los recursos. Utilice teardown_request() para eso.

Parámetros

f (flask.scaffold.T_after_request) –

Tipo del valor devuelto

flask.scaffold.T_after_request

after_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.AfterRequestCallable]]

Una estructura de datos de funciones a llamar al final de cada solicitud, con el formato {scope: [functions]}. La clave scope es el nombre de un blueprint para el que las funciones están activas, o None para todas las peticiones.

Para registrar una función, utilice el decorador after_request().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

app_context()

Crea un AppContext. Úsalo como un bloque with para empujar el contexto, lo que hará que current_app apunte a esta aplicación.

Un contexto de aplicación es automáticamente empujado por RequestContext.push() cuando se maneja una solicitud, y cuando se ejecuta un comando CLI. Use esto para crear manualmente un contexto fuera de estas situaciones.

with app.app_context():
    init_db()

Véase El contexto de la aplicación.

Changelog

Nuevo en la versión 0.9.

Tipo del valor devuelto

flask.ctx.AppContext

app_ctx_globals_class

alias of flask.ctx._AppCtxGlobals

async_to_sync(func)

Devuelve una función de sincronización que ejecutará la función coroutine.

result = app.async_to_sync(func)(*args, **kwargs)

Sobrescribe este método para cambiar la forma en que la aplicación convierte el código asíncrono para que se pueda llamar de forma sincrónica.

Changelog

Nuevo en la versión 2.0.

Parámetros

func (Callable[[...], Coroutine]) –

Tipo del valor devuelto

Callable[[…], Any]

auto_find_instance_path()

Intenta localizar la ruta de la instancia si no fue proporcionada al constructor de la clase de la aplicación. Básicamente calculará la ruta de una carpeta llamada instance junto a su archivo principal o al paquete.

Changelog

Nuevo en la versión 0.8.

Tipo del valor devuelto

str

before_first_request(f)

Registra una función que se ejecutará antes de la primera petición a esta instancia de la aplicación.

La función será llamada sin argumentos y su valor de retorno será ignorado.

Obsoleto desde la versión 2.2: Se eliminará en Flask 2.3. Ejecute el código de configuración al crear la aplicación en su lugar.

Changelog

Nuevo en la versión 0.8.

Parámetros

f (flask.app.T_before_first_request) –

Tipo del valor devuelto

flask.app.T_before_first_request

before_first_request_funcs: t.List[ft.BeforeFirstRequestCallable]

Una lista de funciones que serán llamadas al principio de la primera petición a esta instancia. Para registrar una función, utilice el decorador before_first_request().

Obsoleto desde la versión 2.2: Se eliminará en Flask 2.3. Ejecute el código de configuración al crear la aplicación en su lugar.

Changelog

Nuevo en la versión 0.8.

before_request(f)

Registrar una función para ejecutar antes de cada solicitud.

Por ejemplo, esto se puede utilizar para abrir una conexión a la base de datos, o para cargar el usuario conectado desde la sesión.

@app.before_request
def load_user():
    if "user_id" in session:
        g.user = db.session.get(session["user_id"])

La función será llamada sin ningún argumento. Si devuelve un valor que no sea None, el valor se maneja como si fuera el valor de retorno de la vista, y se detiene el manejo de la solicitud.

Parámetros

f (flask.scaffold.T_before_request) –

Tipo del valor devuelto

flask.scaffold.T_before_request

before_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.BeforeRequestCallable]]

Una estructura de datos de funciones a llamar al principio de cada petición, con el formato {scope: [functions]}. La clave scope es el nombre de un plano para el que las funciones están activas, o None para todas las peticiones.

Para registrar una función, utilice el decorador before_request().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

blueprints: t.Dict[str, 'Blueprint']

Asigna nombres de planos registrados a objetos de planos. El dictado conserva el orden en que se registraron los planos. Los planos se pueden registrar varias veces, este dict no registra la frecuencia con la que se adjuntaron.

Changelog

Nuevo en la versión 0.7.

cli

El grupo de comandos Click para registrar los comandos CLI para este objeto. Los comandos están disponibles desde el comando flask una vez que se ha descubierto la aplicación y se han registrado los blueprints.

config

El diccionario de configuración como Config. Se comporta exactamente como un diccionario normal, pero admite métodos adicionales para cargar una configuración desde archivos.

config_class

alias of flask.config.Config

context_processor(f)

Registra una función de procesador de contexto de plantilla.

Parámetros

f (flask.scaffold.T_template_context_processor) –

Tipo del valor devuelto

flask.scaffold.T_template_context_processor

create_global_jinja_loader()

Crea el cargador para el entorno Jinja2. Se puede utilizar para anular sólo el cargador y mantener el resto sin cambios. Se desaconseja anular esta función. En su lugar se debe sobrescribir la función jinja_loader().

El cargador global despacha entre los cargadores de la aplicación y los blueprints individuales.

Changelog

Nuevo en la versión 0.7.

Tipo del valor devuelto

flask.templating.DispatchingJinjaLoader

create_jinja_environment()

Crea el entorno Jinja basado en jinja_options y en los distintos métodos de la aplicación relacionados con Jinja. Cambiar jinja_options después de esto no tendrá ningún efecto. También añade al entorno los globales y filtros relacionados con Flask.

Changelog

Distinto en la versión 0.11: Environment.auto_reload establecido de acuerdo con la opción de configuración TEMPLATES_AUTO_RELOAD.

Nuevo en la versión 0.5.

Tipo del valor devuelto

flask.templating.Environment

create_url_adapter(request)

Crea un adaptador de URL para la solicitud dada. El adaptador de URL se crea en un punto en el que el contexto de la solicitud aún no está configurado, por lo que la solicitud se pasa explícitamente.

Changelog

Distinto en la versión 1.0: SERVER_NAME ya no permite implícitamente la coincidencia de subdominios. Utilice subdomain_matching en su lugar.

Distinto en la versión 0.9: Ahora también se puede llamar sin un objeto de solicitud cuando se crea el adaptador de URL para el contexto de la aplicación.

Nuevo en la versión 0.6.

Parámetros

request (Optional[flask.wrappers.Request]) –

Tipo del valor devuelto

Optional[werkzeug.routing.map.MapAdapter]

property debug: bool

Si el modo de depuración está activado. Cuando se utiliza flask run para iniciar el servidor de desarrollo, se mostrará un depurador interactivo para las excepciones no manejadas, y el servidor se recargará cuando el código cambie. Esto se asigna a la clave de configuración DEBUG. Se activa cuando env es 'development y se anula con la variable de entorno FLASK_DEBUG. Puede que no se comporte como se espera si se establece en el código.

No active el modo de depuración cuando se despliegue en producción.

Por defecto: True si env es 'development, o False en caso contrario.

default_config = {'APPLICATION_ROOT': '/', 'DEBUG': None, 'ENV': None, 'EXPLAIN_TEMPLATE_LOADING': False, 'JSONIFY_MIMETYPE': 'application/json', 'JSONIFY_PRETTYPRINT_REGULAR': False, 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS': True, 'MAX_CONTENT_LENGTH': None, 'MAX_COOKIE_SIZE': 4093, 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31), 'PREFERRED_URL_SCHEME': 'http', 'PROPAGATE_EXCEPTIONS': None, 'SECRET_KEY': None, 'SEND_FILE_MAX_AGE_DEFAULT': None, 'SERVER_NAME': None, 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_SAMESITE': None, 'SESSION_COOKIE_SECURE': False, 'SESSION_REFRESH_EACH_REQUEST': True, 'TEMPLATES_AUTO_RELOAD': None, 'TESTING': False, 'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False, 'USE_X_SENDFILE': False}

Parámetros de configuración por defecto.

delete(rule, **options)

Acceso directo a route() con methods=["DELETE"].

Changelog

Nuevo en la versión 2.0.

Parámetros
  • rule (str) –

  • options (Any) –

Tipo del valor devuelto

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

dispatch_request()

Realiza el envío de la solicitud. Coincide con la URL y devuelve el valor de retorno de la vista o del manejador de errores. Esto no tiene que ser un objeto de respuesta. Para convertir el valor de retorno en un objeto de respuesta adecuado, llame a make_response().

Changelog

Distinto en la versión 0.7: Esto ya no hace el manejo de excepciones, este código fue movido al nuevo full_dispatch_request().

Tipo del valor devuelto

Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]

do_teardown_appcontext(exc=<object object>)

Se llama justo antes de que aparezca el contexto de la aplicación.

Cuando se maneja una solicitud, el contexto de la aplicación se despliega después del contexto de la solicitud. Véase do_teardown_request().

Esto llama a todas las funciones decoradas con teardown_appcontext(). Entonces se envía la señal appcontext_tearing_down.

Esto es llamado por AppContext.pop().

Changelog

Nuevo en la versión 0.9.

Parámetros

exc (Optional[BaseException]) –

Tipo del valor devuelto

None

do_teardown_request(exc=<object object>)

Se llama después de que se envíe la solicitud y se devuelva la respuesta, justo antes de que el contexto de la solicitud se vacíe.

Esto llama a todas las funciones decoradas con teardown_request(), y Blueprint.teardown_request() si un blueprint manejó la solicitud. Finalmente, se envía la señal request_tearing_down.

Esto es llamado por RequestContext.pop(), que puede ser retrasado durante las pruebas para mantener el acceso a los recursos.

Parámetros

exc (Optional[BaseException]) – Una excepción no controlada que se ha producido durante el envío de la solicitud. Se detecta a partir de la información de excepción actual si no se pasa. Se pasa a cada función de desmontaje.

Tipo del valor devuelto

None

Changelog

Distinto en la versión 0.9: Se ha añadido el argumento exc.

endpoint(endpoint)

Decora una función de vista para registrarla para el punto final dado. Se utiliza si se añade una regla sin una view_func con add_url_rule().

app.add_url_rule("/ex", endpoint="example")

@app.endpoint("example")
def example():
    ...
Parámetros

endpoint (str) – El nombre del punto final a asociar con la función de la vista.

Tipo del valor devuelto

Callable[[flask.scaffold.F], flask.scaffold.F]

ensure_sync(func)

Asegúrese de que la función es sincrónica para los trabajadores WSGI. Las funciones def simples se devuelven tal cual. Las funciones async def se envuelven para ejecutarse y esperar la respuesta.

Anula este método para cambiar la forma en que la aplicación ejecuta las vistas asíncronas.

Changelog

Nuevo en la versión 2.0.

Parámetros

func (Callable) –

Tipo del valor devuelto

Callable

env

En qué entorno se está ejecutando la aplicación. Flask y las extensiones pueden habilitar comportamientos basados en el entorno, como habilitar el modo de depuración. Esto se asigna a la clave de configuración ENV. Esto es establecido por la variable de entorno FLASK_ENV y puede no comportarse como se espera si se establece en el código.

No activar el desarrollo cuando se despliega en producción.

Por defecto: 'producción'

error_handler_spec: t.Dict[ft.AppOrBlueprintKey, t.Dict[t.Optional[int], t.Dict[t.Type[Exception], ft.ErrorHandlerCallable]]]

Una estructura de datos de los gestores de errores registrados, con el formato scope: {code: {class: handler}}. La clave scope es el nombre de un plano para el que los manejadores están activos, o None para todas las peticiones. La clave code es el código de estado HTTP para HTTPException, o None para otras excepciones. El diccionario más interno asigna las clases de excepción a las funciones de los manejadores.

Para registrar un manejador de errores, utilice el decorador errorhandler().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

errorhandler(code_or_exception)

Registrar una función para manejar errores por código o clase de excepción.

Un decorador que se utiliza para registrar una función dado un código de error. Ejemplo:

@app.errorhandler(404)
def page_not_found(error):
    return 'This page does not exist', 404

También puedes registrar manejadores para excepciones arbitrarias:

@app.errorhandler(DatabaseError)
def special_exception_handler(error):
    return 'Database connection failed', 500
Changelog

Nuevo en la versión 0.7: Utilice register_error_handler() en lugar de modificar error_handler_spec directamente, para los manejadores de error de toda la aplicación.

Nuevo en la versión 0.7: Ahora también se pueden registrar tipos de excepción personalizados que no necesariamente tienen que ser una subclase de la clase HTTPException.

Parámetros

code_or_exception (Union[Type[Exception], int]) – el código como entero para el manejador, o una excepción arbitraria

Tipo del valor devuelto

Callable[[flask.scaffold.T_error_handler], flask.scaffold.T_error_handler]

extensions: dict

un lugar donde las extensiones pueden almacenar el estado específico de la aplicación. Por ejemplo, aquí es donde una extensión podría almacenar motores de bases de datos y cosas similares.

La clave debe coincidir con el nombre del módulo de extensión. Por ejemplo, en el caso de una extensión «Flask-Foo» en flask_foo, la clave sería 'foo'.

Changelog

Nuevo en la versión 0.7.

full_dispatch_request()

Despacha la solicitud y, además, realiza el pre y postprocesamiento de la misma, así como la captura de excepciones HTTP y el manejo de errores.

Changelog

Nuevo en la versión 0.7.

Tipo del valor devuelto

flask.wrappers.Response

get(rule, **options)

Acceso directo a route() con methods=["GET"].

Changelog

Nuevo en la versión 2.0.

Parámetros
  • rule (str) –

  • options (Any) –

Tipo del valor devuelto

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

get_send_file_max_age(filename)

Utilizado por send_file() para determinar el valor de la caché max_age para una ruta de archivo dada si no se ha pasado.

Por defecto, esto devuelve SEND_FILE_MAX_AGE_DEFAULT de la configuración de current_app. Este valor por defecto es None, lo que indica al navegador que utilice peticiones condicionales en lugar de una caché temporizada, lo que suele ser preferible.

Changelog

Distinto en la versión 2.0: La configuración por defecto es None en lugar de 12 horas.

Nuevo en la versión 0.9.

Parámetros

filename (Optional[str]) –

Tipo del valor devuelto

Optional[int]

property got_first_request: bool

Este atributo se establece como True si la aplicación comenzó a manejar la primera solicitud.

Changelog

Nuevo en la versión 0.8.

handle_exception(e)

Maneja una excepción que no tiene un manejador de errores asociado, o que fue lanzada desde un manejador de errores. Esto siempre provoca un error 500 InternalServerError.

Siempre envía la señal got_request_exception.

Si propagate_exceptions es True, como en el modo de depuración, el error será relanzado para que el depurador pueda mostrarlo. En caso contrario, se registra la excepción original y se devuelve un InternalServerError.

Si se registra un gestor de errores para InternalServerError o 500, se utilizará. Por consistencia, el manejador siempre recibirá el InternalServerError. La excepción original no manejada está disponible como e.original_exception.

Changelog

Distinto en la versión 1.1.0: Siempre pasa la instancia InternalServerError al manejador, estableciendo original_exception al error no manejado.

Distinto en la versión 1.1.0: Las funciones after_request y otras finalizaciones se realizan incluso para la respuesta 500 por defecto cuando no hay un manejador.

Nuevo en la versión 0.3.

Parámetros

e (Exception) –

Tipo del valor devuelto

flask.wrappers.Response

handle_http_exception(e)

Maneja una excepción HTTP. Por defecto, esto invocará los manejadores de error registrados y volverá a devolver la excepción como respuesta.

Changelog

Distinto en la versión 1.0.3: RoutingException, que se utiliza internamente para acciones como redireccionamientos de barras durante el enrutamiento, no se pasa a los manejadores de errores.

Distinto en la versión 1.0: Las excepciones son buscadas por el código y por MRO, por lo que las subclases de HTTPException pueden ser manejadas con un manejador catch-all para la HTTPException base.

Nuevo en la versión 0.3.

Parámetros

e (werkzeug.exceptions.HTTPException) –

Tipo del valor devuelto

Union[werkzeug.exceptions.HTTPException, Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]

handle_url_build_error(error, endpoint, values)

Llamada por url_for() si se ha producido un BuildError. Si esto devuelve un valor, será devuelto por url_for, de lo contrario el error se volverá a lanzar.

Cada función en url_build_error_handlers es llamada con error, endpoint y values. Si una función devuelve None o genera un BuildError, se omite. De lo contrario, su valor de retorno es devuelto por url_for.

Parámetros
  • error (werkzeug.routing.exceptions.BuildError) – El BuildError activo que se está manejando.

  • endpoint (str) – El punto final que se construye.

  • values (Dict[str, Any]) – Los argumentos de la palabra clave pasada a url_for.

Tipo del valor devuelto

str

handle_user_exception(e)

Este método es llamado cada vez que ocurre una excepción que debe ser manejada. Un caso especial es HTTPException que se reenvía al método handle_http_exception(). Esta función devolverá un valor de respuesta o volverá a lanzar la excepción con el mismo traceback.

Changelog

Distinto en la versión 1.0: Los errores de clave que se producen a partir de datos de solicitud como form muestran la clave errónea en modo de depuración en lugar de un mensaje genérico de solicitud errónea.

Nuevo en la versión 0.7.

Parámetros

e (Exception) –

Tipo del valor devuelto

Union[werkzeug.exceptions.HTTPException, Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]

property has_static_folder: bool

True si static_folder está establecido.

Changelog

Nuevo en la versión 0.5.

import_name

El nombre del paquete o módulo al que pertenece este objeto. No lo cambie una vez que lo haya establecido el constructor.

inject_url_defaults(endpoint, values)

Inyecta los valores predeterminados de la URL para el punto final dado directamente en el diccionario de valores pasado. Esto se utiliza internamente y se llama automáticamente en la construcción de la URL.

Changelog

Nuevo en la versión 0.7.

Parámetros
  • endpoint (str) –

  • values (dict) –

Tipo del valor devuelto

None

instance_path

Contiene la ruta de la carpeta de la instancia.

Changelog

Nuevo en la versión 0.8.

iter_blueprints()

Itera sobre todos los planos por el orden en que fueron registrados.

Changelog

Nuevo en la versión 0.11.

Tipo del valor devuelto

ValuesView[Blueprint]

property jinja_env: flask.templating.Environment

El entorno Jinja utilizado para cargar las plantillas.

El entorno se crea la primera vez que se accede a esta propiedad. Cambiar jinja_options después no tendrá ningún efecto.

jinja_environment

alias of flask.templating.Environment

property jinja_loader: Optional[jinja2.loaders.FileSystemLoader]

El cargador de Jinja para las plantillas de este objeto. Por defecto es una clase jinja2.loaders.FileSystemLoader a template_folder si se establece.

Changelog

Nuevo en la versión 0.5.

jinja_options: dict = {}

Opciones que se pasan al entorno Jinja en create_jinja_environment(). Cambiar estas opciones después de crear el entorno (accediendo a jinja_env) no tendrá ningún efecto.

Changelog

Distinto en la versión 1.1.0: Es un dict en lugar de un ImmutableDict para permitir una configuración más fácil.

json_decoder

alias of flask.json.JSONDecoder

json_encoder

alias of flask.json.JSONEncoder

log_exception(exc_info)

Registra una excepción. Es llamado por handle_exception() si la depuración está deshabilitada y justo antes de llamar al manejador. La implementación por defecto registra la excepción como error en el logger.

Changelog

Nuevo en la versión 0.8.

Parámetros

exc_info (Union[Tuple[type, BaseException, types.TracebackType], Tuple[None, None, None]]) –

Tipo del valor devuelto

None

property logger: logging.Logger

Un Logger estándar de Python para la aplicación, con el mismo nombre que name.

En el modo de depuración, el level del registrador se establecerá en DEBUG.

Si no hay ningún gestor configurado, se añadirá un gestor por defecto. Consulte Registro para obtener más información.

Changelog

Distinto en la versión 1.1.0: El registrador toma el mismo nombre que name en lugar de codificar con fuerza "flask.app".

Distinto en la versión 1.0.0: Se ha simplificado el comportamiento. El registrador siempre se llama "flask.app". El nivel sólo se establece durante la configuración, no comprueba app.debug cada vez. Sólo se utiliza un formato, no diferentes dependiendo de app.debug. No se eliminan manejadores, y sólo se añade un manejador si no hay ninguno ya configurado.

Nuevo en la versión 0.3.

make_aborter()

Crea el objeto para asignar a aborter. Ese objeto es llamado por flask.abort() para levantar errores HTTP, y también puede ser llamado directamente.

Por defecto, esto crea una instancia de aborter_class, que por defecto es werkzeug.exceptions.Aborter.

Nuevo en la versión 2.2.

Tipo del valor devuelto

werkzeug.exceptions.Aborter

make_config(instance_relative=False)

Usado para crear el atributo config por el constructor de Flask. El parámetro instance_relative se pasa desde el constructor de Flask (allí llamado instance_relative_config) e indica si el config debe ser relativo a la ruta de la instancia o a la ruta raíz de la aplicación.

Changelog

Nuevo en la versión 0.8.

Parámetros

instance_relative (bool) –

Tipo del valor devuelto

flask.config.Config

make_default_options_response()

Este método es llamado para crear la respuesta OPTIONS por defecto. Esto se puede cambiar a través de la subclase para cambiar el comportamiento por defecto de las respuestas OPTIONS.

Changelog

Nuevo en la versión 0.7.

Tipo del valor devuelto

flask.wrappers.Response

make_response(rv)

Convierte el valor de retorno de una función de la vista en una instancia de response_class.

Parámetros

rv (Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, ...]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, ...]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], WSGIApplication]) – el valor de retorno de la función de la vista. La función de la vista debe devolver una respuesta. No se permite devolver None, o que la vista termine sin devolver. Se permiten los siguientes tipos para view_rv: str Se crea un objeto de respuesta con la cadena codificada en UTF-8 como cuerpo. Se crea un objeto de respuesta con los bytes como cuerpo. dict Un diccionario que será jsonificado antes de ser devuelto. Una lista que será jsonificada antes de ser devuelta. Un generador que devuelve str o bytes para ser transmitido como respuesta. Una tupla puede ser (body, status, header), (body, status), o (body, header), donde body es cualquiera de los otros tipos permitidos, state es una cadena o un entero, y header es un diccionario o una lista de tuplas (key, value). Si body es una instancia de response_class, status sobrescribe el valor de salida y headers se extiende. response_class El objeto se devuelve sin cambios. other Response class El objeto se coacciona a response_class. callable() La función se llama como una aplicación WSGI. El resultado se utiliza para crear un objeto de respuesta.

Tipo del valor devuelto

flask.wrappers.Response

Distinto en la versión 2.2: Un generador se convertirá en una respuesta en streaming. Una lista se convertirá en una respuesta JSON.

Changelog

Distinto en la versión 1.1: Un diccionario se convertirá en una respuesta JSON.

Distinto en la versión 0.9: Anteriormente se interpretaba una tupla como los argumentos del objeto de respuesta.

make_shell_context()

Devuelve el contexto de shell para un shell interactivo para esta aplicación. Esto ejecuta todos los procesadores de contexto de shell registrados.

Changelog

Nuevo en la versión 0.11.

Tipo del valor devuelto

dict

property name: str

El nombre de la aplicación. Suele ser el nombre de importación con la diferencia de que se adivina a partir del archivo de ejecución si el nombre de importación es main. Este nombre se utiliza como nombre de visualización cuando Flask necesita el nombre de la aplicación. Se puede establecer y anular para cambiar el valor.

Changelog

Nuevo en la versión 0.8.

open_instance_resource(resource, mode='rb')

Abre un recurso de la carpeta de instancia de la aplicación (instance_path). Por lo demás, funciona como open_resource(). Los recursos de instancia también se pueden abrir para escribir.

Parámetros
  • resource (str) – el nombre del recurso. Para acceder a los recursos dentro de las subcarpetas, utilice barras inclinadas como separador.

  • mode (str) – modo de apertura del archivo de recursos, por defecto es “rb”.

Tipo del valor devuelto

IO

open_resource(resource, mode='rb')

Abre un archivo de recursos relativo a root_path para su lectura.

Por ejemplo, si el archivo schema.sql está junto al archivo app.py donde está definida la aplicación Flask, se puede abrir con:

with app.open_resource("schema.sql") as f:
    conn.executescript(f.read())
Parámetros
  • resource (str) – Ruta del recurso relativa a root_path.

  • mode (str) – Abre el archivo en este modo. Sólo se admite la lectura, los valores válidos son «r» (o «rt») y «rb».

Tipo del valor devuelto

IO

patch(rule, **options)

Acceso directo a route() con methods=["PATCH"].

Changelog

Nuevo en la versión 2.0.

Parámetros
  • rule (str) –

  • options (Any) –

Tipo del valor devuelto

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

permanent_session_lifetime

Una timedelta que se utiliza para establecer la fecha de expiración de una sesión permanente. El valor predeterminado es 31 días, lo que hace que una sesión permanente sobreviva aproximadamente un mes.

Este atributo también se puede configurar desde la configuración con la clave de configuración PERMANENT_SESSION_LIFETIME. Por defecto es timedelta(days=31)

post(rule, **options)

Acceso directo a route() con methods=["POST"].

Changelog

Nuevo en la versión 2.0.

Parámetros
  • rule (str) –

  • options (Any) –

Tipo del valor devuelto

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

preprocess_request()

Se llama antes de que se envíe la solicitud. Llama a url_value_preprocessors registrado con la app y el blueprint actual (si lo hay). Luego llama a before_request_funcs registrado con la app y el blueprint.

Si cualquier manejador before_request() devuelve un valor que no es None, el valor se maneja como si fuera el valor de retorno de la vista, y se detiene el manejo posterior de la solicitud.

Tipo del valor devuelto

Optional[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]]

process_response(response)

Puede ser sobreescrito para modificar el objeto de respuesta antes de que sea enviado al servidor WSGI. Por defecto, esto llamará a todas las funciones decoradas after_request().

Changelog

Distinto en la versión 0.5: A partir de Flask 0.5 las funciones registradas para después de la ejecución de la solicitud son llamadas en orden inverso al registro.

Parámetros

response (flask.wrappers.Response) – un objeto response_class.

Returns

un nuevo objeto de respuesta o el mismo, tiene que ser una instancia de response_class.

Tipo del valor devuelto

flask.wrappers.Response

property propagate_exceptions: bool

Devuelve el valor de la configuración PROPAGATE_EXCEPTIONS en caso de que esté establecido, de lo contrario se devuelve un valor por defecto sensible.

Changelog

Nuevo en la versión 0.7.

put(rule, **options)

Acceso directo a route() con methods=["PUT"].

Changelog

Nuevo en la versión 2.0.

Parámetros
  • rule (str) –

  • options (Any) –

Tipo del valor devuelto

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

redirect(location, code=302)

Crea un objeto de respuesta de redirección.

Esto es llamado por flask.redirect(), y puede ser llamado directamente también.

Parámetros
  • location (str) – La URL a la que se redirige.

  • code (int) – El código de estado de la redirección.

Tipo del valor devuelto

werkzeug.wrappers.response.Response

Nuevo en la versión 2.2: Movido de flask.redirect, que llama a este método.

register_blueprint(blueprint, **options)

Registra un Blueprint en la aplicación. Los argumentos de palabras clave pasados a este método anulan los valores predeterminados establecidos en el plano.

Llama al método register() del blueprint después de registrar el blueprint en el blueprints de la aplicación.

Parámetros
  • blueprint (Blueprint) – El blueprint para registrarse.

  • url_prefix – Las rutas de los blueprint llevarán este prefijo.

  • subdomain – Las rutas Blueprint coincidirán en este subdominio.

  • url_defaults – Las rutas Blueprint utilizarán estos valores por defecto para los argumentos de la vista.

  • options (Any) – Los argumentos adicionales de la palabra clave se pasan a BlueprintSetupState. Se puede acceder a ellos en las llamadas de retorno de record().

Tipo del valor devuelto

None

Changelog

Distinto en la versión 2.0.1: La opción name se puede utilizar para cambiar el nombre (pre-punteado) con el que se registra el blueprint. Esto permite registrar el mismo plano varias veces con nombres únicos para url_for.

Nuevo en la versión 0.7.

register_error_handler(code_or_exception, f)

Función alternativa de adición de errores al decorador errorhandler() que es más sencilla de utilizar para el uso de no decoradores.

Changelog

Nuevo en la versión 0.7.

Parámetros
Tipo del valor devuelto

None

request_class

alias of flask.wrappers.Request

request_context(environ)

Crea un RequestContext que represente un entorno WSGI. Utiliza un bloque with para empujar el contexto, lo que hará que request apunte a esta solicitud.

Véase El contexto de la solicitud.

Típicamente no deberías llamar a esto desde tu propio código. Un contexto de solicitud es automáticamente empujado por el wsgi_app() cuando se maneja una solicitud. Utilice test_request_context() para crear un entorno y un contexto en lugar de este método.

Parámetros

environ (dict) – un entorno WSGI

Tipo del valor devuelto

flask.ctx.RequestContext

response_class

alias of flask.wrappers.Response

root_path

Ruta absoluta del paquete en el sistema de archivos. Se utiliza para buscar los recursos contenidos en el paquete.

route(rule, **options)

Decora una función de la vista para registrarla con la regla de URL y las opciones dadas. Llama a add_url_rule(), que tiene más detalles sobre la implementación.

@app.route("/")
def index():
    return "Hello, World!"

Véase Registros de rutas URL.

El nombre del endpoint de la ruta es por defecto el nombre de la función de la vista si no se pasa el parámetro endpoint.

El parámetro methods es por defecto ["GET"]. Los parámetros HEAD y OPTIONS se añaden automáticamente.

Parámetros
  • rule (str) – La cadena de reglas URL.

  • options (Any) – Opciones extra pasadas al objeto Rule.

Tipo del valor devuelto

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

run(host=None, port=None, debug=None, load_dotenv=True, **options)

Ejecuta la aplicación en un servidor de desarrollo local.

No utilice run() en un entorno de producción. No está pensado para cumplir con los requisitos de seguridad y rendimiento de un servidor de producción. En su lugar, consulte Despliegue en producción para ver las recomendaciones sobre servidores WSGI.

Si se establece la bandera debug el servidor se recargará automáticamente para los cambios de código y mostrará un depurador en caso de que se produzca una excepción.

Si quieres ejecutar la aplicación en modo de depuración, pero deshabilitar la ejecución de código en el depurador interactivo, puedes pasar use_evalex=False como parámetro. Esto mantendrá activa la pantalla de rastreo del depurador, pero deshabilitará la ejecución de código.

No se recomienda utilizar esta función para el desarrollo con recarga automática, ya que está mal soportada. En su lugar, debería utilizar el soporte de la línea de comandos de flask de run.

Tenga en cuenta

Flask suprimirá cualquier error del servidor con una página de error genérica a menos que esté en modo de depuración. Por lo tanto, para activar sólo el depurador interactivo sin la recarga de código, tienes que invocar run() con debug=True y use_reloader=False. Si estableces use_debugger a True sin estar en modo de depuración no atraparás ninguna excepción porque no habrá ninguna que atrapar.

Parámetros
  • host (Optional[str]) – el nombre de host para escuchar. Establezca este valor a '0.0.0.0' para tener el servidor disponible externamente también. Por defecto es '127.0.0.1' o el host en la variable de configuración SERVER_NAME si está presente.

  • port (Optional[int]) – el puerto del servidor web. Por defecto es 5000 o el puerto definido en la variable de configuración SERVER_NAME si está presente.

  • debug (Optional[bool]) – si se da, activa o desactiva el modo de depuración. Ver debug.

  • load_dotenv (bool) – Carga los archivos .env y .flaskenv más cercanos para establecer las variables de entorno. También cambiará el directorio de trabajo al directorio que contenga el primer archivo encontrado.

  • options (Any) – las opciones que deben ser reenviadas al servidor Werkzeug subyacente. Ver werkzeug.serving.run_simple() para más información.

Tipo del valor devuelto

None

Changelog

Distinto en la versión 1.0: Si se instala, python-dotenv se utilizará para cargar las variables de entorno de los archivos .env y .flaskenv.

Si se establece, las variables de entorno FLASK_ENV y FLASK_DEBUG anularán a env y debug.

El modo de hilos está activado por defecto.

Distinto en la versión 0.10: El puerto por defecto se elige ahora a partir de la variable SERVER_NAME.

secret_key

Si se establece una clave secreta, los componentes criptográficos pueden utilizarla para firmar cookies y otras cosas. Establece esto a un valor aleatorio complejo cuando quieras usar la cookie segura, por ejemplo.

Este atributo también se puede configurar desde la configuración con la clave de configuración SECRET_KEY. El valor predeterminado es None.

select_jinja_autoescape(filename)

Devuelve True si el autoescapado debe estar activo para el nombre de la plantilla dada. Si no se da ningún nombre de plantilla, devuelve True.

Changelog

Nuevo en la versión 0.5.

Parámetros

filename (str) –

Tipo del valor devuelto

bool

send_file_max_age_default

Un timedelta o número de segundos que se utiliza como max_age por defecto para send_file(). El valor por defecto es None, lo que indica al navegador que utilice peticiones condicionales en lugar de una caché temporizada.

Configurado con la clave de configuración SEND_FILE_MAX_AGE_DEFAULT.

Changelog

Distinto en la versión 2.0: Por defecto es None en lugar de 12 horas.

send_static_file(filename)

La función de la vista utilizada para servir archivos desde carpeta_estática. Se registra automáticamente una ruta para esta vista en static_url_path si se establece static_folder.

Changelog

Nuevo en la versión 0.5.

Parámetros

filename (str) –

Tipo del valor devuelto

Response

La cookie segura utiliza esto para el nombre de la cookie de sesión.

Este atributo también se puede configurar desde la configuración con la clave de configuración SESSION_COOKIE_NAME. Por defecto es session

session_interface: flask.sessions.SessionInterface = <flask.sessions.SecureCookieSessionInterface object>

la interfaz de sesión a utilizar. Por defecto se utiliza una instancia de SecureCookieSessionInterface.

Changelog

Nuevo en la versión 0.8.

shell_context_processor(f)

Registra una función de procesador de contexto del shell.

Changelog

Nuevo en la versión 0.11.

Parámetros

f (flask.app.T_shell_context_processor) –

Tipo del valor devuelto

flask.app.T_shell_context_processor

shell_context_processors: t.List[ft.ShellContextProcessorCallable]

Una lista de funciones del procesador de contextos de shell que deben ejecutarse cuando se crea un contexto de shell.

Changelog

Nuevo en la versión 0.11.

should_ignore_error(error)

Se llama para averiguar si un error debe ser ignorado o no en lo que respecta al sistema de desmontaje. Si esta función devuelve True, los gestores de desmontaje no recibirán el error.

Changelog

Nuevo en la versión 0.10.

Parámetros

error (Optional[BaseException]) –

Tipo del valor devuelto

bool

property static_folder: Optional[str]

La ruta absoluta a la carpeta estática configurada. None si no se ha configurado ninguna carpeta estática.

property static_url_path: Optional[str]

El prefijo de la URL desde la que se podrá acceder a la ruta estática.

Si no se ha configurado durante el init, se deriva de static_folder.

teardown_appcontext(f)

Registra una función que será llamada cuando el contexto de la aplicación sea extraído. El contexto de la aplicación se abre normalmente después del contexto de solicitud de cada petición, al final de los comandos de la CLI, o después de que un contexto empujado manualmente termine.

with app.app_context():
    ...

Cuando el bloque with sale (o se llama a ctx.pop()), las funciones de desmontaje son llamadas justo antes de que el contexto de aplicación se vuelva inactivo. Dado que un contexto de petición normalmente también gestiona un contexto de aplicación, también se llamará cuando se haga desaparecer un contexto de petición.

Cuando se llama a una función de desmontaje debido a una excepción no manejada, se le pasa un objeto de error. Si se registra un errorhandler(), éste manejará la excepción y el teardown no la recibirá.

Las funciones de desmontaje deben evitar lanzar excepciones. Si ejecutan código que puede fallar deben rodear ese código con un bloque try/except y registrar cualquier error.

Los valores de retorno de las funciones de desmontaje se ignoran.

Changelog

Nuevo en la versión 0.9.

Parámetros

f (flask.app.T_teardown) –

Tipo del valor devuelto

flask.app.T_teardown

teardown_appcontext_funcs: t.List[ft.TeardownCallable]

Una lista de funciones que son llamadas cuando el contexto de la aplicación es destruido. Dado que el contexto de la aplicación también se destruye si la solicitud termina, este es el lugar para almacenar el código que se desconecta de las bases de datos.

Changelog

Nuevo en la versión 0.9.

teardown_request(f)

Registra una función para ser llamada cuando el contexto de la solicitud es empujado. Normalmente, esto ocurre al final de cada solicitud, pero los contextos pueden ser empujados manualmente también durante las pruebas.

with app.test_request_context():
    ...

Cuando el bloque with sale (o se llama a ctx.pop()), las funciones de desmontaje son llamadas justo antes de que el contexto de la petición se vuelva inactivo.

Cuando se llama a una función de desmontaje debido a una excepción no manejada, se le pasa un objeto de error. Si se registra un errorhandler(), éste manejará la excepción y el teardown no la recibirá.

Las funciones de desmontaje deben evitar lanzar excepciones. Si ejecutan código que puede fallar deben rodear ese código con un bloque try/except y registrar cualquier error.

Los valores de retorno de las funciones de desmontaje se ignoran.

Parámetros

f (flask.scaffold.T_teardown) –

Tipo del valor devuelto

flask.scaffold.T_teardown

teardown_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.TeardownCallable]]

Una estructura de datos de funciones para llamar al final de cada solicitud, incluso si se produce una excepción, en el formato {scope: [funciones]}. La clave scope es el nombre de un plano para el que las funciones están activas, o None para todas las peticiones.

Para registrar una función, utilice el decorador teardown_request().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

template_context_processors: t.Dict[ft.AppOrBlueprintKey, t.List[ft.TemplateContextProcessorCallable]]

Una estructura de datos de funciones a las que llamar para pasar valores de contexto adicionales al renderizar plantillas, con el formato {scope: [funciones]}. La clave scope es el nombre de un plano para el que las funciones están activas, o None para todas las solicitudes.

Para registrar una función, utilice el decorador context_processor().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

template_filter(name=None)

Un decorador que se utiliza para registrar un filtro de plantilla personalizado. Puede especificar un nombre para el filtro, de lo contrario se utilizará el nombre de la función. Ejemplo:

@app.template_filter()
def reverse(s):
    return s[::-1]
Parámetros

name (Optional[str]) – el nombre opcional del filtro, de lo contrario se utilizará el nombre de la función.

Tipo del valor devuelto

Callable[[flask.app.T_template_filter], flask.app.T_template_filter]

template_folder

La ruta a la carpeta de plantillas, relativa a root_path, para añadir al cargador de plantillas. None si no se deben añadir plantillas.

template_global(name=None)

Un decorador que se utiliza para registrar una función global de plantilla personalizada. Puede especificar un nombre para la función global, de lo contrario se utilizará el nombre de la función. Ejemplo:

@app.template_global()
def double(n):
    return 2 * n
Changelog

Nuevo en la versión 0.10.

Parámetros

name (Optional[str]) – el nombre opcional de la función global, de lo contrario se utilizará el nombre de la función.

Tipo del valor devuelto

Callable[[flask.app.T_template_global], flask.app.T_template_global]

template_test(name=None)

Un decorador que se utiliza para registrar la prueba de plantilla personalizada. Puede especificar un nombre para la prueba, de lo contrario se utilizará el nombre de la función. Ejemplo:

@app.template_test()
def is_prime(n):
    if n == 2:
        return True
    for i in range(2, int(math.ceil(math.sqrt(n))) + 1):
        if n % i == 0:
            return False
    return True
Changelog

Nuevo en la versión 0.10.

Parámetros

name (Optional[str]) – el nombre opcional de la prueba, de lo contrario se utilizará el nombre de la función.

Tipo del valor devuelto

Callable[[flask.app.T_template_test], flask.app.T_template_test]

property templates_auto_reload: bool

Recarga las plantillas cuando se modifican. Utilizado por create_jinja_environment().

Este atributo puede ser configurado con TEMPLATES_AUTO_RELOAD. Si no se configura, se habilitará en modo de depuración.

Changelog

Nuevo en la versión 1.0: Esta propiedad se añadió pero la configuración y el comportamiento subyacentes ya existían.

test_cli_runner(**kwargs)

Crea un runner CLI para probar los comandos CLI. Ver Ejecución de comandos con el CLI Runner.

Devuelve una instancia de test_cli_runner_class, por defecto FlaskCliRunner. El objeto de la aplicación Flask se pasa como primer argumento.

Changelog

Nuevo en la versión 1.0.

Parámetros

kwargs (Any) –

Tipo del valor devuelto

FlaskCliRunner

test_cli_runner_class: Optional[Type[FlaskCliRunner]] = None

La subclase CliRunner, por defecto FlaskCliRunner que es utilizada por test_cli_runner(). Su método __init__ debe tomar un objeto de aplicación Flask como primer argumento.

Changelog

Nuevo en la versión 1.0.

test_client(use_cookies=True, **kwargs)

Crea un cliente de prueba para esta aplicación. Para obtener información sobre las pruebas unitarias dirígete a Prueba de aplicaciones Flask.

Tenga en cuenta que si está probando aserciones o excepciones en el código de su aplicación, debe establecer app.testing = True para que las excepciones se propaguen al cliente de prueba. De lo contrario, la excepción será manejada por la aplicación (no visible para el cliente de prueba) y la única indicación de un AssertionError u otra excepción será una respuesta de código de estado 500 para el cliente de prueba. Véase el atributo testing. Por ejemplo:

app.testing = True
client = app.test_client()

El cliente de prueba puede utilizarse en un bloque with para aplazar el cierre del contexto hasta el final del bloque with. Esto es útil si quieres acceder a los locales del contexto para hacer pruebas:

with app.test_client() as c:
    rv = c.get('/?vodka=42')
    assert request.args['vodka'] == '42'

Además, puede pasar argumentos opcionales de palabras clave que luego se pasarán al constructor de la aplicación test_client_class. Por ejemplo:

from flask.testing import FlaskClient

class CustomClient(FlaskClient):
    def __init__(self, *args, **kwargs):
        self._authentication = kwargs.pop("authentication")
        super(CustomClient,self).__init__( *args, **kwargs)

app.test_client_class = CustomClient
client = app.test_client(authentication='Basic ....')

Ver FlaskClient para más información.

Changelog

Distinto en la versión 0.11: Se ha añadido **kwargs para poder pasar argumentos de palabras clave adicionales al constructor de test_client_class.

Nuevo en la versión 0.7: Se ha añadido el parámetro use_cookies, así como la posibilidad de anular el cliente que se utilizará estableciendo el atributo test_client_class.

Distinto en la versión 0.4: se ha añadido soporte para el uso de bloques with para el cliente.

Parámetros
  • use_cookies (bool) –

  • kwargs (Any) –

Tipo del valor devuelto

FlaskClient

test_client_class: Optional[Type[FlaskClient]] = None

El método test_client() crea una instancia de esta clase de cliente de pruebas. Por defecto es FlaskClient.

Changelog

Nuevo en la versión 0.7.

test_request_context(*args, **kwargs)

Crea un RequestContext para un entorno WSGI creado a partir de los valores dados. Esto es útil sobre todo durante las pruebas, en las que se puede querer ejecutar una función que utilice datos de solicitud sin enviar una solicitud completa.

Véase El contexto de la solicitud.

Utiliza un bloque with para empujar el contexto, lo que hará que request apunte a la solicitud del entorno creado.

with test_request_context(...):
    generate_report()

Cuando se utiliza el intérprete de comandos, puede ser más fácil de empujar y saltar el contexto manualmente para evitar la indentación

ctx = app.test_request_context(...)
ctx.push()
...
ctx.pop()

Toma los mismos argumentos que el EnvironBuilder de Werkzeug, con algunos valores por defecto de la aplicación. Consulte la documentación de Werkzeug para conocer la mayoría de los argumentos disponibles. El comportamiento específico de Flask está listado aquí.

Parámetros
  • path – Ruta de la URL solicitada.

  • base_url – URL base donde se sirve la aplicación, a la que path es relativa. Si no se da, se construye a partir de PREFERRED_URL_SCHEME, subdomain, SERVER_NAME, y APPLICATION_ROOT.

  • subdomain – Nombre del subdominio a añadir a SERVER_NAME.

  • url_scheme – Esquema a utilizar en lugar de PREFERRED_URL_SCHEME.

  • data – El cuerpo de la solicitud, ya sea una cadena o un dictado de claves y valores del formulario.

  • json – Si se da, se serializa como JSON y se pasa como data. Además, el tipo de contenido por defecto es application/json.

  • args (Any) – otros argumentos posicionales pasados a EnvironBuilder.

  • kwargs (Any) – otros argumentos de palabra clave pasados a EnvironBuilder.

Tipo del valor devuelto

flask.ctx.RequestContext

testing

La bandera de prueba. Establece esto como True para activar el modo de prueba de las extensiones de Flask (y en el futuro probablemente también el propio Flask). Por ejemplo, esto podría activar los ayudantes de prueba que tienen un coste de tiempo de ejecución adicional que no debería estar habilitado por defecto.

Si se habilita y no se cambia PROPAGATE_EXCEPTIONS del valor por defecto, se habilita implícitamente.

Este atributo también se puede configurar desde la configuración con la clave de configuración TESTING. El valor predeterminado es False.

trap_http_exception(e)

Comprueba si una excepción HTTP debe ser atrapada o no. Por defecto devuelve False para todas las excepciones excepto para un error de clave de petición si TRAP_BAD_REQUEST_ERRORS se establece como True. También devuelve True si TRAP_HTTP_EXCEPTIONS es True.

Se llama para todas las excepciones HTTP lanzadas por una función de la vista. Si devuelve True para cualquier excepción, el manejador de errores para esta excepción no es llamado y se muestra como una excepción regular en el rastreo. Esto es útil para depurar excepciones HTTP implícitas.

Changelog

Distinto en la versión 1.0: Los errores de peticiones malas no se atrapan por defecto en el modo de depuración.

Nuevo en la versión 0.8.

Parámetros

e (Exception) –

Tipo del valor devuelto

bool

update_template_context(context)

Actualiza el contexto de la plantilla con algunas variables de uso común. Esto inyecta request, session, config y g en el contexto de la plantilla, así como todo lo que los procesadores de contexto de la plantilla quieran inyectar. Ten en cuenta que a partir de Flask 0.6, los valores originales del contexto no serán anulados si un procesador de contexto decide devolver un valor con la misma clave.

Parámetros

context (dict) – el contexto como un diccionario que se actualiza en el lugar para añadir variables adicionales.

Tipo del valor devuelto

None

url_build_error_handlers: t.List[t.Callable[[Exception, str, t.Dict[str, t.Any]], str]]

Una lista de funciones que son llamadas por handle_url_build_error() cuando url_for() genera un BuildError. Cada función es llamada con error, endpoint y values. Si una función devuelve None o genera un BuildError, se omite. De lo contrario, su valor de retorno es devuelto por url_for.

Changelog

Nuevo en la versión 0.9.

url_default_functions: t.Dict[ft.AppOrBlueprintKey, t.List[ft.URLDefaultCallable]]

Una estructura de datos de funciones a las que llamar para modificar los argumentos de las palabras clave al generar las URL, con el formato {scope: [funciones]}. La clave scope es el nombre de un plano para el que las funciones están activas, o None para todas las solicitudes.

Para registrar una función, utilice el decorador url_defaults().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

url_defaults(f)

Función de devolución de llamada para los valores predeterminados de la URL para todas las funciones de vista de la aplicación. Se llama con el endpoint y los valores y debe actualizar los valores pasados en su lugar.

Parámetros

f (flask.scaffold.T_url_defaults) –

Tipo del valor devuelto

flask.scaffold.T_url_defaults

url_for(endpoint, *, _anchor=None, _method=None, _scheme=None, _external=None, **values)

Genera una URL al endpoint dado con los valores indicados.

Esto es llamado por flask.url_for(), y puede ser llamado directamente también.

Un endpoint es el nombre de una regla de URL, normalmente añadida con @app.route(), y normalmente el mismo nombre que la función de la vista. Una ruta definida en un Blueprint antepondrá el nombre del blueprint separado por un . al endpoint.

En algunos casos, como en los mensajes de correo electrónico, quieres que las URLs incluyan el esquema y el dominio, como https://example.com/hello. Cuando no está en una petición activa, las URLs serán externas por defecto, pero esto requiere configurar SERVER_NAME para que Flask sepa qué dominio usar. APPLICATION_ROOT y PREFERRED_URL_SCHEME también deben configurarse según sea necesario. Esta configuración sólo se utiliza cuando no está en una solicitud activa.

Las funciones pueden ser decoradas con url_defaults() para modificar los argumentos de las palabras clave antes de construir la URL.

Si la construcción falla por alguna razón, como un punto final desconocido o valores incorrectos, se llama al método handle_url_build_error() de la aplicación. Si devuelve una cadena, se devuelve, de lo contrario se lanza un BuildError.

Parámetros
  • endpoint (str) – El nombre del endpoint asociado a la URL a generar. Si empieza por ., se utilizará el nombre del plano actual (si lo hay).

  • _anchor (Optional[str]) – Si se proporciona, se añade como #anchor a la URL.

  • _method (Optional[str]) – Si se da, genera la URL asociada a este método para el punto final.

  • _scheme (Optional[str]) – Si se da, la URL tendrá este esquema si es externa.

  • _external (Optional[bool]) – Si se da, prefiere que la URL sea interna (False) o requiere que sea externa (True). Las URLs externas incluyen el esquema y el dominio. Cuando no están en una solicitud activa, las URL son externas por defecto.

  • values (Any) – Valores a utilizar para las partes variables de la regla URL. Las claves desconocidas se añaden como argumentos de la cadena de consulta, como ?a=b&c=d.

Tipo del valor devuelto

str

Nuevo en la versión 2.2: Movido de flask.url_for, que llama a este método.

url_map

La Map para esta instancia. Se puede utilizar para cambiar los convertidores de enrutamiento después de la creación de la clase pero antes de que se conecte ninguna ruta. Ejemplo:

from werkzeug.routing import BaseConverter

class ListConverter(BaseConverter):
    def to_python(self, value):
        return value.split(',')
    def to_url(self, values):
        return ','.join(super(ListConverter, self).to_url(value)
                        for value in values)

app = Flask(__name__)
app.url_map.converters['list'] = ListConverter
url_map_class

alias of werkzeug.routing.map.Map

url_rule_class

alias of werkzeug.routing.rules.Rule

url_value_preprocessor(f)

Registrar una función de preprocesador de valores de URL para todas las funciones de vista en la aplicación. Estas funciones serán llamadas antes de las funciones before_request().

La función puede modificar los valores capturados de la url coincidente antes de pasarlos a la vista. Por ejemplo, se puede utilizar para hacer saltar un valor de código de lenguaje común y colocarlo en g en lugar de pasarlo a cada vista.

A la función se le pasa el nombre del endpoint y el dictado de valores. El valor de retorno se ignora.

Parámetros

f (flask.scaffold.T_url_value_preprocessor) –

Tipo del valor devuelto

flask.scaffold.T_url_value_preprocessor

url_value_preprocessors: t.Dict[ft.AppOrBlueprintKey, t.List[ft.URLValuePreprocessorCallable]]

Una estructura de datos de funciones a las que llamar para modificar los argumentos de palabras clave pasados a la función de vista, con el formato {scope: [functions]}. La clave scope es el nombre de un plano para el que las funciones están activas, o None para todas las solicitudes.

Para registrar una función, utilice el decorador url_value_preprocessor().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

use_x_sendfile

Active esta opción si desea utilizar la función X-Sendfile. Tenga en cuenta que el servidor tiene que soportar esto. Esto sólo afecta a los archivos enviados con el método send_file().

Changelog

Nuevo en la versión 0.2.

Este atributo también se puede configurar desde la configuración con la clave de configuración USE_X_SENDFILE. Por defecto es False.

view_functions: t.Dict[str, t.Callable]

Un diccionario que asigna los nombres de los endpoints a las funciones de la vista.

Para registrar una función de vista, utilice el decorador route().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

wsgi_app(environ, start_response)

La aplicación WSGI real. Esto no está implementado en __call__() para que los middlewares puedan ser aplicados sin perder una referencia al objeto app. En lugar de hacer esto:

app = MyMiddleware(app)

Es mejor hacer esto en su lugar:

app.wsgi_app = MyMiddleware(app.wsgi_app)

Entonces todavía tienes el objeto original de la aplicación y puedes seguir llamando a los métodos en él.

Changelog

Distinto en la versión 0.7: Los eventos de desmontaje para los contextos de solicitud y de aplicación se llaman incluso si se produce un error no manejado. Otros eventos pueden no ser llamados dependiendo de cuándo se produzca un error durante el despacho. Véase Callbacks y errores.

Parámetros
  • environ (dict) – Un entorno WSGI.

  • start_response (Callable) – Una llamada que acepta un código de estado, una lista de cabeceras y un contexto de excepción opcional para iniciar la respuesta.

Tipo del valor devuelto

Any

Objetos Blueprint

class flask.Blueprint(name, import_name, static_folder=None, static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, root_path=None, cli_group=<object object>)

Representa un blueprint, una colección de rutas y otras funciones relacionadas con la aplicación que pueden ser registradas en una aplicación real más tarde.

Un blueprint es un objeto que permite definir las funciones de la aplicación sin requerir un objeto de aplicación por adelantado. Utiliza los mismos decoradores que Flask, pero aplaza la necesidad de una aplicación registrándolos para su posterior registro.

Al decorar una función con un blueprint se crea una función diferida que se llama con BlueprintSetupState cuando el blueprint se registra en una aplicación.

Consulte Aplicaciones modulares con Blueprints para más información.

Parámetros
  • name (str) – El nombre del blueprint. Se antepondrá a cada nombre de endpoint.

  • import_name (str) – El nombre del paquete del blueprint, normalmente __name__. Esto ayuda a localizar el root_path para el blueprint.

  • static_folder (Optional[Union[str, os.PathLike]]) – Una carpeta con archivos estáticos que deben ser servidos por la ruta estática del blueprint. La ruta es relativa a la ruta raíz del blueprint. Los archivos estáticos del blueprint están desactivados por defecto.

  • static_url_path (Optional[str]) – La url desde la que se sirven los archivos estáticos. Por defecto es static_folder. Si el blueprint no tiene un url_prefix, la ruta estática de la aplicación tendrá prioridad, y los archivos estáticos del blueprint no serán accesibles.

  • template_folder (Optional[str]) – Una carpeta con plantillas que debe añadirse a la ruta de búsqueda de plantillas de la aplicación. La ruta es relativa a la ruta raíz del blueprint. Las plantillas de blueprint están desactivadas por defecto. Las plantillas de blueprint tienen una precedencia menor que las de la carpeta de plantillas de la app.

  • url_prefix (Optional[str]) – Una ruta que se añade a todas las URL del blueprint, para distinguirlas del resto de las rutas de la aplicación.

  • subdomain (Optional[str]) – Un subdominio en el que las rutas blueprint coincidirán por defecto.

  • url_defaults (Optional[dict]) – Un diccionario de valores por defecto que las rutas de blueprint recibirán por defecto.

  • root_path (Optional[str]) – Por defecto, el blueprint lo establecerá automáticamente basándose en import_name. En ciertas situaciones esta detección automática puede fallar, por lo que la ruta puede ser especificada manualmente en su lugar.

  • cli_group (Optional[str]) – El nombre del grupo CLI del blueprint. Si no se establece, se utilizará el nombre del plano.

Changelog

Distinto en la versión 1.1.0: Los blueprints tienen un grupo cli para registrar los comandos CLI anidados. El parámetro cli_group controla el nombre del grupo bajo el comando flask.

Nuevo en la versión 0.7.

add_app_template_filter(f, name=None)

Registra un filtro de plantilla personalizado, disponible en toda la aplicación. Como Flask.add_template_filter() pero para un blueprint. Funciona exactamente igual que el decorador app_template_filter().

Parámetros
  • name (Optional[str]) – el nombre opcional del filtro, de lo contrario se utilizará el nombre de la función.

  • f (Callable[[...], Any]) –

Tipo del valor devuelto

None

add_app_template_global(f, name=None)

Registrar una plantilla personalizada global, disponible en toda la aplicación. Como Flask.add_template_global() pero para un blueprint. Funciona exactamente igual que el decorador app_template_global().

Changelog

Nuevo en la versión 0.10.

Parámetros
  • name (Optional[str]) – el nombre opcional del global, de lo contrario se utilizará el nombre de la función.

  • f (Callable[[...], Any]) –

Tipo del valor devuelto

None

add_app_template_test(f, name=None)

Registra una prueba de plantilla personalizada, disponible en toda la aplicación. Como Flask.add_template_test() pero para un blueprint. Funciona exactamente igual que el decorador app_template_test().

Changelog

Nuevo en la versión 0.10.

Parámetros
  • name (Optional[str]) – el nombre opcional de la prueba, de lo contrario se utilizará el nombre de la función.

  • f (Callable[[...], bool]) –

Tipo del valor devuelto

None

add_url_rule(rule, endpoint=None, view_func=None, provide_automatic_options=None, **options)

Como Flask.add_url_rule() pero para un blueprint. El endpoint de la función url_for() lleva como prefijo el nombre del blueprint.

Parámetros
Tipo del valor devuelto

None

after_app_request(f)

Como Flask.after_request() pero para un blueprint. Dicha función se ejecuta después de cada petición, incluso si está fuera del blueprint.

Parámetros

f (flask.blueprints.T_after_request) –

Tipo del valor devuelto

flask.blueprints.T_after_request

after_request(f)

Registrar una función que se ejecute después de cada petición a este objeto.

La función se llama con el objeto response, y debe devolver un objeto response. Esto permite que las funciones modifiquen o sustituyan la respuesta antes de ser enviada.

Si una función lanza una excepción, cualquier función after_request restante no será llamada. Por lo tanto, esto no debe ser utilizado para las acciones que deben ejecutarse, como para cerrar los recursos. Utilice teardown_request() para eso.

Parámetros

f (flask.scaffold.T_after_request) –

Tipo del valor devuelto

flask.scaffold.T_after_request

after_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.AfterRequestCallable]]

Una estructura de datos de funciones a llamar al final de cada solicitud, con el formato {scope: [functions]}. La clave scope es el nombre de un blueprint para el que las funciones están activas, o None para todas las peticiones.

Para registrar una función, utilice el decorador after_request().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

app_context_processor(f)

Como Flask.context_processor() pero para un blueprint. Dicha función se ejecuta en cada petición, incluso si está fuera del blueprint.

Parámetros

f (flask.blueprints.T_template_context_processor) –

Tipo del valor devuelto

flask.blueprints.T_template_context_processor

app_errorhandler(code)

Como Flask.errorhandler() pero para un blueprint. Este manejador se utiliza para todas las solicitudes, incluso si están fuera del blueprint.

Parámetros

code (Union[Type[Exception], int]) –

Tipo del valor devuelto

Callable[[flask.blueprints.T_error_handler], flask.blueprints.T_error_handler]

app_template_filter(name=None)

Registra un filtro de plantilla personalizado, disponible en toda la aplicación. Como Flask.template_filter() pero para un blueprint.

Parámetros

name (Optional[str]) – el nombre opcional del filtro, de lo contrario se utilizará el nombre de la función.

Tipo del valor devuelto

Callable[[flask.blueprints.T_template_filter], flask.blueprints.T_template_filter]

app_template_global(name=None)

Registrar una plantilla personalizada global, disponible en toda la aplicación. Como Flask.template_global() pero para un blueprint.

Changelog

Nuevo en la versión 0.10.

Parámetros

name (Optional[str]) – el nombre opcional del global, de lo contrario se utilizará el nombre de la función.

Tipo del valor devuelto

Callable[[flask.blueprints.T_template_global], flask.blueprints.T_template_global]

app_template_test(name=None)

Registra una prueba de plantilla personalizada, disponible en toda la aplicación. Como Flask.template_test() pero para un blueprint.

Changelog

Nuevo en la versión 0.10.

Parámetros

name (Optional[str]) – el nombre opcional de la prueba, de lo contrario se utilizará el nombre de la función.

Tipo del valor devuelto

Callable[[flask.blueprints.T_template_test], flask.blueprints.T_template_test]

app_url_defaults(f)

Igual que url_defaults() pero en toda la aplicación.

Parámetros

f (flask.blueprints.T_url_defaults) –

Tipo del valor devuelto

flask.blueprints.T_url_defaults

app_url_value_preprocessor(f)

Igual que url_value_preprocessor() pero en toda la aplicación.

Parámetros

f (flask.blueprints.T_url_value_preprocessor) –

Tipo del valor devuelto

flask.blueprints.T_url_value_preprocessor

before_app_first_request(f)

Como Flask.before_first_request(). Dicha función se ejecuta antes de la primera petición a la aplicación.

Obsoleto desde la versión 2.2: Se eliminará en Flask 2.3. Ejecute el código de configuración al crear la aplicación en su lugar.

Parámetros

f (flask.blueprints.T_before_first_request) –

Tipo del valor devuelto

flask.blueprints.T_before_first_request

before_app_request(f)

Como Flask.before_request(). Esta función se ejecuta antes de cada solicitud, incluso si está fuera de un blueprint.

Parámetros

f (flask.blueprints.T_before_request) –

Tipo del valor devuelto

flask.blueprints.T_before_request

before_request(f)

Registrar una función para ejecutar antes de cada solicitud.

Por ejemplo, esto se puede utilizar para abrir una conexión a la base de datos, o para cargar el usuario conectado desde la sesión.

@app.before_request
def load_user():
    if "user_id" in session:
        g.user = db.session.get(session["user_id"])

La función será llamada sin ningún argumento. Si devuelve un valor que no sea None, el valor se maneja como si fuera el valor de retorno de la vista, y se detiene el manejo de la solicitud.

Parámetros

f (flask.scaffold.T_before_request) –

Tipo del valor devuelto

flask.scaffold.T_before_request

before_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.BeforeRequestCallable]]

Una estructura de datos de funciones a llamar al principio de cada petición, con el formato {scope: [functions]}. La clave scope es el nombre de un plano para el que las funciones están activas, o None para todas las peticiones.

Para registrar una función, utilice el decorador before_request().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

cli

El grupo de comandos Click para registrar los comandos CLI para este objeto. Los comandos están disponibles desde el comando flask una vez que se ha descubierto la aplicación y se han registrado los blueprints.

context_processor(f)

Registra una función de procesador de contexto de plantilla.

Parámetros

f (flask.scaffold.T_template_context_processor) –

Tipo del valor devuelto

flask.scaffold.T_template_context_processor

delete(rule, **options)

Acceso directo a route() con methods=["DELETE"].

Changelog

Nuevo en la versión 2.0.

Parámetros
  • rule (str) –

  • options (Any) –

Tipo del valor devuelto

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

endpoint(endpoint)

Decora una función de vista para registrarla para el punto final dado. Se utiliza si se añade una regla sin una view_func con add_url_rule().

app.add_url_rule("/ex", endpoint="example")

@app.endpoint("example")
def example():
    ...
Parámetros

endpoint (str) – El nombre del punto final a asociar con la función de la vista.

Tipo del valor devuelto

Callable[[flask.scaffold.F], flask.scaffold.F]

error_handler_spec: t.Dict[ft.AppOrBlueprintKey, t.Dict[t.Optional[int], t.Dict[t.Type[Exception], ft.ErrorHandlerCallable]]]

Una estructura de datos de los gestores de errores registrados, con el formato scope: {code: {class: handler}}. La clave scope es el nombre de un plano para el que los manejadores están activos, o None para todas las peticiones. La clave code es el código de estado HTTP para HTTPException, o None para otras excepciones. El diccionario más interno asigna las clases de excepción a las funciones de los manejadores.

Para registrar un manejador de errores, utilice el decorador errorhandler().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

errorhandler(code_or_exception)

Registrar una función para manejar errores por código o clase de excepción.

Un decorador que se utiliza para registrar una función dado un código de error. Ejemplo:

@app.errorhandler(404)
def page_not_found(error):
    return 'This page does not exist', 404

También puedes registrar manejadores para excepciones arbitrarias:

@app.errorhandler(DatabaseError)
def special_exception_handler(error):
    return 'Database connection failed', 500
Changelog

Nuevo en la versión 0.7: Utilice register_error_handler() en lugar de modificar error_handler_spec directamente, para los manejadores de error de toda la aplicación.

Nuevo en la versión 0.7: Ahora también se pueden registrar tipos de excepción personalizados que no necesariamente tienen que ser una subclase de la clase HTTPException.

Parámetros

code_or_exception (Union[Type[Exception], int]) – el código como entero para el manejador, o una excepción arbitraria

Tipo del valor devuelto

Callable[[flask.scaffold.T_error_handler], flask.scaffold.T_error_handler]

get(rule, **options)

Acceso directo a route() con methods=["GET"].

Changelog

Nuevo en la versión 2.0.

Parámetros
  • rule (str) –

  • options (Any) –

Tipo del valor devuelto

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

get_send_file_max_age(filename)

Utilizado por send_file() para determinar el valor de la caché max_age para una ruta de archivo dada si no se ha pasado.

Por defecto, esto devuelve SEND_FILE_MAX_AGE_DEFAULT de la configuración de current_app. Este valor por defecto es None, lo que indica al navegador que utilice peticiones condicionales en lugar de una caché temporizada, lo que suele ser preferible.

Changelog

Distinto en la versión 2.0: La configuración por defecto es None en lugar de 12 horas.

Nuevo en la versión 0.9.

Parámetros

filename (Optional[str]) –

Tipo del valor devuelto

Optional[int]

property has_static_folder: bool

True si static_folder está establecido.

Changelog

Nuevo en la versión 0.5.

import_name

El nombre del paquete o módulo al que pertenece este objeto. No lo cambie una vez que lo haya establecido el constructor.

property jinja_loader: Optional[jinja2.loaders.FileSystemLoader]

El cargador de Jinja para las plantillas de este objeto. Por defecto es una clase jinja2.loaders.FileSystemLoader a template_folder si se establece.

Changelog

Nuevo en la versión 0.5.

json_decoder: t.Optional[t.Type[JSONDecoder]] = None

Clase de decodificador JSON local del blueprint a utilizar. Establezca None para utilizar la json_decoder de la aplicación.

json_encoder: t.Optional[t.Type[JSONEncoder]] = None

Clase de codificador JSON local del blueprint a utilizar. Establezca None para utilizar la json_encoder de la aplicación.

make_setup_state(app, options, first_registration=False)

Crea una instancia del objeto BlueprintSetupState() que luego se pasa a las funciones de callback de registro. Las subclases pueden anular esto para devolver una subclase del estado de configuración.

Parámetros
  • app (Flask) –

  • options (dict) –

  • first_registration (bool) –

Tipo del valor devuelto

flask.blueprints.BlueprintSetupState

open_resource(resource, mode='rb')

Abre un archivo de recursos relativo a root_path para su lectura.

Por ejemplo, si el archivo schema.sql está junto al archivo app.py donde está definida la aplicación Flask, se puede abrir con:

with app.open_resource("schema.sql") as f:
    conn.executescript(f.read())
Parámetros
  • resource (str) – Ruta del recurso relativa a root_path.

  • mode (str) – Abre el archivo en este modo. Sólo se admite la lectura, los valores válidos son «r» (o «rt») y «rb».

Tipo del valor devuelto

IO

patch(rule, **options)

Acceso directo a route() con methods=["PATCH"].

Changelog

Nuevo en la versión 2.0.

Parámetros
  • rule (str) –

  • options (Any) –

Tipo del valor devuelto

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

post(rule, **options)

Acceso directo a route() con methods=["POST"].

Changelog

Nuevo en la versión 2.0.

Parámetros
  • rule (str) –

  • options (Any) –

Tipo del valor devuelto

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

put(rule, **options)

Acceso directo a route() con methods=["PUT"].

Changelog

Nuevo en la versión 2.0.

Parámetros
  • rule (str) –

  • options (Any) –

Tipo del valor devuelto

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

record(func)

Registra una función que es llamada cuando el blueprint es registrado en la aplicación. Esta función se llama con el estado como argumento devuelto por el método make_setup_state().

Parámetros

func (Callable) –

Tipo del valor devuelto

None

record_once(func)

Funciona como record() pero envuelve la función en otra función que asegurará que la función sólo se llame una vez. Si el blueprint se registra una segunda vez en la aplicación, la función pasada no se llama.

Parámetros

func (Callable) –

Tipo del valor devuelto

None

register(app, options)

Llamado por Flask.register_blueprint() para registrar todas las vistas y callbacks registrados en el blueprint con la aplicación. Crea un BlueprintSetupState y llama a cada callback record() con él.

Parámetros
  • app (Flask) – La aplicación con la que se registra este blueprint.

  • options (dict) – Argumentos de la palabra clave reenviados desde register_blueprint().

Tipo del valor devuelto

None

Changelog

Distinto en la versión 2.0.1: Los blueprints anidados se registran con su nombre punteado. Esto permite anidar diferentes blueprints con el mismo nombre en diferentes lugares.

Distinto en la versión 2.0.1: La opción name se puede utilizar para cambiar el nombre (pre-punteado) con el que se registra el blueprint. Esto permite registrar el mismo plano varias veces con nombres únicos para url_for.

Distinto en la versión 2.0.1: Registrar el mismo blueprint con el mismo nombre varias veces está obsoleto y será un error en Flask 2.1.

register_blueprint(blueprint, **options)

Registra una Blueprint en este blueprint. Los argumentos de palabras clave pasados a este método anulan los valores predeterminados establecidos en el blueprint.

Changelog

Distinto en la versión 2.0.1: La opción name se puede utilizar para cambiar el nombre (pre-punteado) con el que se registra el blueprint. Esto permite registrar el mismo plano varias veces con nombres únicos para url_for.

Nuevo en la versión 2.0.

Parámetros
Tipo del valor devuelto

None

register_error_handler(code_or_exception, f)

Función alternativa de adición de errores al decorador errorhandler() que es más sencilla de utilizar para el uso de no decoradores.

Changelog

Nuevo en la versión 0.7.

Parámetros
Tipo del valor devuelto

None

root_path

Ruta absoluta del paquete en el sistema de archivos. Se utiliza para buscar los recursos contenidos en el paquete.

route(rule, **options)

Decora una función de la vista para registrarla con la regla de URL y las opciones dadas. Llama a add_url_rule(), que tiene más detalles sobre la implementación.

@app.route("/")
def index():
    return "Hello, World!"

Véase Registros de rutas URL.

El nombre del endpoint de la ruta es por defecto el nombre de la función de la vista si no se pasa el parámetro endpoint.

El parámetro methods es por defecto ["GET"]. Los parámetros HEAD y OPTIONS se añaden automáticamente.

Parámetros
  • rule (str) – La cadena de reglas URL.

  • options (Any) – Opciones extra pasadas al objeto Rule.

Tipo del valor devuelto

Callable[[flask.scaffold.T_route], flask.scaffold.T_route]

send_static_file(filename)

La función de la vista utilizada para servir archivos desde carpeta_estática. Se registra automáticamente una ruta para esta vista en static_url_path si se establece static_folder.

Changelog

Nuevo en la versión 0.5.

Parámetros

filename (str) –

Tipo del valor devuelto

Response

property static_folder: Optional[str]

La ruta absoluta a la carpeta estática configurada. None si no se ha configurado ninguna carpeta estática.

property static_url_path: Optional[str]

El prefijo de la URL desde la que se podrá acceder a la ruta estática.

Si no se ha configurado durante el init, se deriva de static_folder.

teardown_app_request(f)

Como Flask.teardown_request() pero para un blueprint. Dicha función se ejecuta al derribar cada solicitud, incluso si está fuera del blueprint.

Parámetros

f (flask.blueprints.T_teardown) –

Tipo del valor devuelto

flask.blueprints.T_teardown

teardown_request(f)

Registra una función para ser llamada cuando el contexto de la solicitud es empujado. Normalmente, esto ocurre al final de cada solicitud, pero los contextos pueden ser empujados manualmente también durante las pruebas.

with app.test_request_context():
    ...

Cuando el bloque with sale (o se llama a ctx.pop()), las funciones de desmontaje son llamadas justo antes de que el contexto de la petición se vuelva inactivo.

Cuando se llama a una función de desmontaje debido a una excepción no manejada, se le pasa un objeto de error. Si se registra un errorhandler(), éste manejará la excepción y el teardown no la recibirá.

Las funciones de desmontaje deben evitar lanzar excepciones. Si ejecutan código que puede fallar deben rodear ese código con un bloque try/except y registrar cualquier error.

Los valores de retorno de las funciones de desmontaje se ignoran.

Parámetros

f (flask.scaffold.T_teardown) –

Tipo del valor devuelto

flask.scaffold.T_teardown

teardown_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.TeardownCallable]]

Una estructura de datos de funciones para llamar al final de cada solicitud, incluso si se produce una excepción, en el formato {scope: [funciones]}. La clave scope es el nombre de un plano para el que las funciones están activas, o None para todas las peticiones.

Para registrar una función, utilice el decorador teardown_request().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

template_context_processors: t.Dict[ft.AppOrBlueprintKey, t.List[ft.TemplateContextProcessorCallable]]

Una estructura de datos de funciones a las que llamar para pasar valores de contexto adicionales al renderizar plantillas, con el formato {scope: [funciones]}. La clave scope es el nombre de un plano para el que las funciones están activas, o None para todas las solicitudes.

Para registrar una función, utilice el decorador context_processor().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

template_folder

La ruta a la carpeta de plantillas, relativa a root_path, para añadir al cargador de plantillas. None si no se deben añadir plantillas.

url_default_functions: t.Dict[ft.AppOrBlueprintKey, t.List[ft.URLDefaultCallable]]

Una estructura de datos de funciones a las que llamar para modificar los argumentos de las palabras clave al generar las URL, con el formato {scope: [funciones]}. La clave scope es el nombre de un plano para el que las funciones están activas, o None para todas las solicitudes.

Para registrar una función, utilice el decorador url_defaults().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

url_defaults(f)

Función de devolución de llamada para los valores predeterminados de la URL para todas las funciones de vista de la aplicación. Se llama con el endpoint y los valores y debe actualizar los valores pasados en su lugar.

Parámetros

f (flask.scaffold.T_url_defaults) –

Tipo del valor devuelto

flask.scaffold.T_url_defaults

url_value_preprocessor(f)

Registrar una función de preprocesador de valores de URL para todas las funciones de vista en la aplicación. Estas funciones serán llamadas antes de las funciones before_request().

La función puede modificar los valores capturados de la url coincidente antes de pasarlos a la vista. Por ejemplo, se puede utilizar para hacer saltar un valor de código de lenguaje común y colocarlo en g en lugar de pasarlo a cada vista.

A la función se le pasa el nombre del endpoint y el dictado de valores. El valor de retorno se ignora.

Parámetros

f (flask.scaffold.T_url_value_preprocessor) –

Tipo del valor devuelto

flask.scaffold.T_url_value_preprocessor

url_value_preprocessors: t.Dict[ft.AppOrBlueprintKey, t.List[ft.URLValuePreprocessorCallable]]

Una estructura de datos de funciones a las que llamar para modificar los argumentos de palabras clave pasados a la función de vista, con el formato {scope: [functions]}. La clave scope es el nombre de un plano para el que las funciones están activas, o None para todas las solicitudes.

Para registrar una función, utilice el decorador url_value_preprocessor().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

view_functions: t.Dict[str, t.Callable]

Un diccionario que asigna los nombres de los endpoints a las funciones de la vista.

Para registrar una función de vista, utilice el decorador route().

Esta estructura de datos es interna. No debe modificarse directamente y su formato puede cambiar en cualquier momento.

Datos de la solicitud entrante

class flask.Request(environ, populate_request=True, shallow=False)

El objeto de solicitud utilizado por defecto en Flask. Recuerda el endpoint coincidente y los argumentos de la vista.

Es lo que termina como request. Si quieres reemplazar el objeto request usado puedes subclasificar esto y establecer request_class a tu subclase.

El objeto request es una subclase Request y proporciona todos los atributos que define Werkzeug más algunos específicos de Flask.

Parámetros
  • environ (WSGIEnvironment) –

  • populate_request (bool) –

  • shallow (bool) –

Tipo del valor devuelto

None

property accept_charsets: werkzeug.datastructures.CharsetAccept

Lista de conjuntos de caracteres que soporta este cliente como objeto CharsetAccept.

property accept_encodings: werkzeug.datastructures.Accept

Lista de codificaciones que acepta este cliente. Las codificaciones en un término HTTP son codificaciones de compresión como gzip. Para los conjuntos de caracteres, consulte accept_charset.

property accept_languages: werkzeug.datastructures.LanguageAccept

Lista de idiomas que este cliente acepta como objeto LanguageAccept.

property accept_mimetypes: werkzeug.datastructures.MIMEAccept

Lista de mimetypes que este cliente soporta como objeto MIMEAccept.

access_control_request_headers

Se envía con una solicitud de verificación previa para indicar qué cabeceras se enviarán con la solicitud de origen cruzado. Establece access_control_allow_headers en la respuesta para indicar qué cabeceras están permitidas.

access_control_request_method

Enviado con una solicitud de preflight para indicar qué método se utilizará para la solicitud de origen cruzado. Establece access_control_allow_methods en la respuesta para indicar qué métodos están permitidos.

property access_route: List[str]

Si existe una cabecera de reenvío esta es una lista de todas las direcciones ip desde la ip del cliente hasta el último servidor proxy.

classmethod application(f)

Decora una función como respondedor que acepta la petición como último argumento. Esto funciona como el decorador responder() pero a la función se le pasa el objeto request como último argumento y el objeto request se cerrará automáticamente:

@Request.application
def my_wsgi_app(request):
    return Response('Hello World!')

A partir de Werkzeug 0.14 las excepciones HTTP se capturan automáticamente y se convierten en respuestas en lugar de fallar.

Parámetros

f (Callable[[Request], WSGIApplication]) – la llamada WSGI para decorar

Returns

una nueva llamada WSGI

Tipo del valor devuelto

WSGIApplication

property args: werkzeug.datastructures.MultiDict[str, str]

Los parámetros de la URL analizados (la parte de la URL después del signo de interrogación).

Por defecto, esta función devuelve una ImmutableMultiDict. Esto puede cambiarse estableciendo parameter_storage_class a un tipo diferente. Esto puede ser necesario si el orden de los datos del formulario es importante.

property authorization: Optional[werkzeug.datastructures.Authorization]

El objeto Authorization en forma analizada.

property base_url: str

Como url pero sin la cadena de consulta.

property blueprint: Optional[str]

El nombre registrado del blueprint actual.

Será None si el endpoint no forma parte de un blueprint, o si la coincidencia de la URL ha fallado o no se ha realizado todavía.

Esto no coincide necesariamente con el nombre con el que se creó el blueprint. Puede haber sido anidado o registrado con un nombre diferente.

property blueprints: List[str]

Los nombres registrados del blueprint actual hacia arriba a través de los blueprints padre.

Será una lista vacía si no hay ningún blueprint actual, o si la coincidencia de URLs ha fallado.

Changelog

Nuevo en la versión 2.0.1.

property cache_control: werkzeug.datastructures.RequestCacheControl

Un objeto RequestCacheControl para las cabeceras de control de caché entrantes.

close()

Cierra los recursos asociados a este objeto de petición. Esto cierra todos los manejadores de archivo explícitamente. También puede utilizar el objeto request en una sentencia with que lo cerrará automáticamente.

Changelog

Nuevo en la versión 0.9.

Tipo del valor devuelto

None

content_encoding

El campo de cabecera de entidad Content-Encoding se utiliza como modificador del tipo de medio. Cuando está presente, su valor indica qué codificaciones de contenido adicionales se han aplicado al cuerpo de la entidad y, por tanto, qué mecanismos de descodificación deben aplicarse para obtener el tipo de medio al que se refiere el campo de cabecera Content-Type.

Changelog

Nuevo en la versión 0.9.

property content_length: Optional[int]

El campo Content-Length de la cabecera de la entidad indica el tamaño del cuerpo de la entidad en bytes o, en el caso del método HEAD, el tamaño del cuerpo de la entidad que se habría enviado si la solicitud hubiera sido un GET.

content_md5

El campo de cabecera de entidad Content-MD5, tal y como se define en el RFC 1864, es un compendio MD5 del cuerpo de la entidad con el fin de proporcionar una comprobación de integridad del mensaje de extremo a extremo (MIC) del cuerpo de la entidad. (Nota: un MIC es bueno para detectar modificaciones accidentales del cuerpo de la entidad en tránsito, pero no es a prueba de ataques maliciosos).

Changelog

Nuevo en la versión 0.9.

content_type

El campo Content-Type de la cabecera de la entidad indica el tipo de medio del cuerpo de la entidad enviado al destinatario o, en el caso del método HEAD, el tipo de medio que se habría enviado si la solicitud hubiera sido un GET.

property cookies: werkzeug.datastructures.ImmutableMultiDict[str, str]

Un dict con el contenido de todas las cookies transmitidas con la solicitud.

property data: bytes

Contiene los datos de la solicitud entrante como cadena en caso de que venga con un mimetype que Werkzeug no maneja.

date

El campo de cabecera general Date representa la fecha y hora en la que se originó el mensaje, teniendo la misma semántica que orig-date en RFC 822.

Changelog

Distinto en la versión 2.0: El objeto datetime tiene en cuenta la zona horaria.

dict_storage_class

alias of werkzeug.datastructures.ImmutableMultiDict

property endpoint: Optional[str]

El endpoint que coincide con la URL de la solicitud.

Será None si la coincidencia ha fallado o no se ha realizado todavía.

Esto en combinación con view_args puede utilizarse para reconstruir la misma URL o una URL modificada.

environ: WSGIEnvironment

El entorno WSGI que contiene las cabeceras HTTP y la información del servidor WSGI.

property files: werkzeug.datastructures.ImmutableMultiDict[str, werkzeug.datastructures.FileStorage]

MultiDict objeto que contiene todos los archivos subidos. Cada clave en files es el nombre del archivo <input type="file" name="">. Cada valor en files es un objeto Werkzeug FileStorage.

Básicamente se comporta como un objeto archivo estándar que conoces de Python, con la diferencia de que también tiene una función save() que puede almacenar el archivo en el sistema de archivos.

Tenga en cuenta que files sólo contendrá datos si el método de solicitud fue POST, PUT o PATCH y el <form> que envió la solicitud tenía enctype="multipart/form-data". En caso contrario, estará vacío.

Consulte la documentación de MultiDict / FileStorage para más detalles sobre la estructura de datos utilizada.

property form: werkzeug.datastructures.ImmutableMultiDict[str, str]

Los parámetros del formulario. Por defecto, esta función devuelve una ImmutableMultiDict. Esto puede cambiarse estableciendo parameter_storage_class a un tipo diferente. Esto puede ser necesario si el orden de los datos del formulario es importante.

Por favor, tenga en cuenta que las subidas de archivos no acabarán aquí, sino en el atributo files.

Changelog

Distinto en la versión 0.9: Antes de Werkzeug 0.9 esto sólo contenía datos de formulario para peticiones POST y PUT.

form_data_parser_class

alias of werkzeug.formparser.FormDataParser

classmethod from_values(*args, **kwargs)

Crea un nuevo objeto de solicitud basado en los valores proporcionados. Si se da environ los valores que faltan se rellenan a partir de ahí. Este método es útil para pequeños scripts cuando se necesita simular una petición desde una URL. No utilice este método para pruebas unitarias, hay un objeto cliente completo (Client) que permite crear peticiones multiparte, soporte para cookies, etc.

Acepta las mismas opciones que el EnvironBuilder.

Changelog

Distinto en la versión 0.5: Este método acepta ahora los mismos argumentos que EnvironBuilder. Debido a esto el parámetro environ se llama ahora environ_overrides.

Returns

objeto de la solicitud

Parámetros
  • args (Any) –

  • kwargs (Any) –

Tipo del valor devuelto

werkzeug.wrappers.request.Request

property full_path: str

Ruta solicitada, incluyendo la cadena de consulta.

get_data(cache=True, as_text=False, parse_form_data=False)

Esto lee los datos entrantes en el buffer del cliente en un objeto de bytes. Por defecto se almacena en caché, pero este comportamiento puede cambiarse estableciendo cache a False.

Normalmente es una mala idea llamar a este método sin comprobar primero la longitud del contenido, ya que un cliente podría enviar docenas de megabytes o más y causar problemas de memoria en el servidor.

Tenga en cuenta que si los datos del formulario ya han sido analizados, este método no devolverá nada, ya que el análisis de los datos del formulario no almacena en caché los datos como hace este método. Para invocar implícitamente la función de análisis de datos del formulario establezca parse_form_data a True. Cuando se hace esto el valor de retorno de este método será una cadena vacía si el analizador de formularios maneja los datos. Esto generalmente no es necesario, ya que si todos los datos se almacenan en caché (que es el valor predeterminado) el analizador de formularios utilizará los datos almacenados en caché para analizar los datos del formulario. Por favor, sea consciente de comprobar la longitud del contenido primero en cualquier caso antes de llamar a este método para evitar agotar la memoria del servidor.

Si as_text se establece como True el valor de retorno será una cadena decodificada.

Changelog

Nuevo en la versión 0.9.

Parámetros
  • cache (bool) –

  • as_text (bool) –

  • parse_form_data (bool) –

Tipo del valor devuelto

Union[bytes, str]

get_json(force=False, silent=False, cache=True)

Analiza data como JSON.

Si el mimetype no indica JSON (application/json, véase is_json), o el análisis sintáctico falla, se llama a on_json_loading_failed() y su valor de retorno se utiliza como valor de retorno. Por defecto, esto genera un error 400 Bad Request.

Parámetros
  • force (bool) – Ignora el mimetype e intenta siempre parsear JSON.

  • silent (bool) – Silencia los errores de mimetype y de parsing, y devuelve None en su lugar.

  • cache (bool) – Almacena el JSON analizado para devolverlo en posteriores llamadas.

Tipo del valor devuelto

Optional[Any]

Changelog

Distinto en la versión 2.1: Generar un error 400 si el tipo de contenido es incorrecto.

headers

Las cabeceras recibidas con la solicitud.

property host: str

El nombre del host al que se hizo la petición, incluyendo el puerto si no es estándar. Validado con trusted_hosts.

property host_url: str

El esquema de la URL de la solicitud y el host solamente.

property if_match: werkzeug.datastructures.ETags

Un objeto que contiene todas las etiquetas electrónicas de la cabecera If-Match.

Tipo del valor devuelto

ETags

property if_modified_since: Optional[datetime.datetime]

La cabecera If-Modified-Since analizada como un objeto datetime.

Changelog

Distinto en la versión 2.0: El objeto datetime tiene en cuenta la zona horaria.

property if_none_match: werkzeug.datastructures.ETags

Un objeto que contiene todas las etiquetas electrónicas de la cabecera If-None-Match.

Tipo del valor devuelto

ETags

property if_range: werkzeug.datastructures.IfRange

La cabecera If-Range analizada.

Changelog

Distinto en la versión 2.0: IfRange.date tiene en cuenta la zona horaria.

Nuevo en la versión 0.7.

property if_unmodified_since: Optional[datetime.datetime]

La cabecera If-Unmodified-Since analizada como un objeto datetime.

Changelog

Distinto en la versión 2.0: El objeto datetime tiene en cuenta la zona horaria.

input_stream

El flujo de entrada WSGI.

En general es una mala idea usar este porque puedes leer fácilmente más allá del límite. Utiliza el stream en su lugar.

property is_json: bool

Comprueba si el mimetype indica datos JSON, ya sea application/json o application/*+json.

is_multiprocess

booleano que es True si la aplicación es servida por un servidor WSGI que genera múltiples procesos.

is_multithread

booleano que es aTrue si la aplicación es servida por un servidor WSGI multihilo.

is_run_once

booleano que es True si la aplicación se ejecutará sólo una vez en la vida del proceso. Este es el caso de CGI, por ejemplo, pero no está garantizado que la ejecución sólo se produzca una vez.

property is_secure: bool

True si la solicitud se hizo con un protocolo seguro (HTTPS o WSS).

property json: Optional[Any]

Los datos JSON analizados si mimetype indica JSON (application/json, véase is_json).

Llama a get_json() con argumentos por defecto.

Si el tipo de contenido de la solicitud no es application/json, se producirá un error 400 Bad Request.

Changelog

Distinto en la versión 2.1: Generar un error 400 si el tipo de contenido es incorrecto.

list_storage_class

alias of werkzeug.datastructures.ImmutableList

make_form_data_parser()

Crea el analizador de datos del formulario. Instala la clase form_data_parser_class con algunos parámetros.

Changelog

Nuevo en la versión 0.8.

Tipo del valor devuelto

werkzeug.formparser.FormDataParser

property max_content_length: Optional[int]

Vista de sólo lectura de la clave de configuración MAX_CONTENT_LENGTH.

max_forwards

El campo Max-Forwards de la cabecera de la petición proporciona un mecanismo con los métodos TRACE y OPTIONS para limitar el número de proxies o pasarelas que pueden reenviar la petición al siguiente servidor entrante.

method

El método con el que se hizo la petición, como GET.

property mimetype: str

Como content_type, pero sin parámetros (por ejemplo, sin charset, tipo, etc.) y siempre en minúsculas. Por ejemplo, si el tipo de contenido es text/HTML; charset=utf-8 el mimetype sería 'text/html'.

property mimetype_params: Dict[str, str]

Los parámetros de mimetype como dict. Por ejemplo, si el tipo de contenido es text/html; charset=utf-8 los parámetros serían {'charset': 'utf-8'}.

on_json_loading_failed(e)

Se llama si get_json() falla y no se silencia.

Si este método devuelve un valor, se utiliza como valor de retorno para get_json(). La implementación por defecto lanza BadRequest.

Parámetros

e (Optional[ValueError]) – Si el análisis sintáctico falló, esta es la excepción. Será None si el tipo de contenido no era application/json.

Tipo del valor devuelto

Any

origin

El host desde el que se originó la solicitud. Establezca access_control_allow_origin en la respuesta para indicar qué orígenes están permitidos.

parameter_storage_class

alias of werkzeug.datastructures.ImmutableMultiDict

path

La parte de la ruta de la URL después de root_path. Esta es la ruta utilizada para el enrutamiento dentro de la aplicación.

property pragma: werkzeug.datastructures.HeaderSet

El campo Pragma general-header se utiliza para incluir directivas específicas de la implementación que podrían aplicarse a cualquier destinatario a lo largo de la cadena de solicitud/respuesta. Todas las directivas pragma especifican un comportamiento opcional desde el punto de vista del protocolo; sin embargo, algunos sistemas PUEDEN exigir que el comportamiento sea coherente con las directivas.

query_string

La parte de la URL después del «?». Este es el valor bruto, utilice args para los valores analizados.

property range: Optional[werkzeug.datastructures.Range]

La cabecera Range analizada.

Changelog

Nuevo en la versión 0.7.

Tipo del valor devuelto

Range

referrer

El campo Referer[sic] request-header permite al cliente especificar, en beneficio del servidor, la dirección (URI) del recurso del que se obtuvo la Request-URI (el «referrer», aunque el campo de la cabecera está mal escrito).

remote_addr

La dirección del cliente que envía la solicitud.

remote_user

Si el servidor admite la autenticación del usuario, y el script está protegido, este atributo contiene el nombre de usuario con el que el usuario se ha autenticado.

root_path

El prefijo con el que se monta la aplicación, sin una barra al final. path viene después de esto.

property root_url: str

El esquema de la URL de la solicitud, el host y la ruta raíz. Esta es la raíz desde la que se accede a la aplicación.

routing_exception: Optional[Exception] = None

Si la coincidencia de la URL falló, esta es la excepción que se lanzará / se lanzó como parte del manejo de la solicitud. Normalmente es una excepción NotFound o algo similar.

scheme

El esquema de la URL del protocolo que la solicitud utilizó, como https o wss.

property script_root: str

Alias para self.root_path. environ["SCRIPT_ROOT"] sin una barra al final.

server

La dirección del servidor. (host, port), (path, None) para sockets unix, o None si no se conoce.

shallow: bool

Se establece al crear el objeto de la petición. Si True, la lectura del cuerpo de la petición causará una RuntimeException. Útil para evitar la modificación del flujo desde el middleware.

property stream: IO[bytes]

Si los datos del formulario entrante no fueron codificados con un mimetype conocido, los datos se almacenan sin modificar en este flujo para su consumo. La mayoría de las veces es mejor usar data que le dará esos datos como una cadena. El flujo sólo devuelve los datos una vez.

A diferencia de input_stream este flujo está debidamente protegido para que no se pueda leer accidentalmente más allá de la longitud de la entrada. Werkzeug siempre se referirá internamente a este flujo para leer los datos, lo que hace posible envolver este objeto con un flujo que hace el filtrado.

Changelog

Distinto en la versión 0.9: Este flujo está ahora siempre disponible pero puede ser consumido por el analizador de formularios más adelante. Anteriormente, el flujo sólo se establecía si no se realizaba el análisis.

property url: str

La URL completa de la solicitud con el esquema, el host, la ruta raíz, la ruta y la cadena de consulta.

property url_charset: str

El conjunto de caracteres que se asume para las URL. Por defecto, el valor de charset.

Changelog

Nuevo en la versión 0.6.

property url_root: str

Alias de root_url. La URL con esquema, host y ruta raíz. Por ejemplo, https://example.com/app/.

url_rule: Optional[Rule] = None

La regla interna de la URL que coincidió con la solicitud. Esto puede ser útil para inspeccionar qué métodos están permitidos para la URL desde un manejador before/after (request.url_rule.methods), etc. Aunque si el método de la petición no era válido para la regla de URL, la lista válida está disponible en routing_exception.valid_methods en su lugar (un atributo de la excepción de Werkzeug MethodNotAllowed) porque la petición nunca estuvo vinculada internamente.

Changelog

Nuevo en la versión 0.6.

property user_agent: werkzeug.user_agent.UserAgent

El user agent. Utilice user_agent.string para obtener el valor de la cabecera. Establece user_agent_class a una subclase de UserAgent para proporcionar el análisis de las otras propiedades u otros datos extendidos.

Changelog

Distinto en la versión 2.0: El analizador incorporado está obsoleto y será eliminado en Werkzeug 2.1. Se debe establecer una subclase UserAgent para analizar los datos de la cadena.

user_agent_class

alias of werkzeug.user_agent.UserAgent

property values: werkzeug.datastructures.CombinedMultiDict[str, str]

Una werkzeug.datastructures.CombinedMultiDict que combina args y form.

En el caso de las peticiones GET, sólo están presentes los args, no el form.

Changelog

Distinto en la versión 2.0: En el caso de las peticiones GET, sólo están presentes los args, no el form.

view_args: Optional[Dict[str, Any]] = None

Un dictado de los argumentos de la vista que coinciden con la solicitud. Si se ha producido una excepción durante la búsqueda, será None.

property want_form_data_parsed: bool

True si el método de solicitud lleva contenido. Por defecto, esto es verdadero si se envía un Content-Type.

Changelog

Nuevo en la versión 0.8.

flask.request

Para acceder a los datos de las peticiones entrantes, puedes utilizar el objeto global request. Flask analiza los datos de las peticiones entrantes por ti y te da acceso a ellos a través de ese objeto global. Internamente Flask se asegura de que siempre obtengas los datos correctos para el hilo activo si estás en un entorno multihilo.

Se trata de un prox. Consulte Notas sobre los apoderados para obtener más información.

El objeto request es una instancia de una Request.

Objetos de respuesta

class flask.Response(response=None, status=None, headers=None, mimetype=None, content_type=None, direct_passthrough=False)

El objeto de respuesta que se utiliza por defecto en Flask. Funciona como el objeto de respuesta de Werkzeug pero está configurado para tener un mimetype HTML por defecto. A menudo no tienes que crear este objeto tú mismo porque make_response() se encargará de ello por ti.

Si quieres reemplazar el objeto de respuesta utilizado puedes subclasificar esto y establecer response_class a tu subclase.

Changelog

Distinto en la versión 1.0: El soporte JSON se añade a la respuesta, al igual que la solicitud. Esto es útil cuando se hacen pruebas para obtener los datos de respuesta del cliente de prueba como JSON.

Distinto en la versión 1.0: Añadido max_cookie_size.

Parámetros
Tipo del valor devuelto

None

accept_ranges

La cabecera Accept-Ranges. Aunque el nombre indique que se admiten varios valores, debe ser un solo token de cadena.

Los valores «bytes» y 'none' son comunes.

Changelog

Nuevo en la versión 0.7.

property access_control_allow_credentials: bool

Si las credenciales pueden ser compartidas por el navegador al código JavaScript. Como parte de la solicitud de verificación previa, indica si las credenciales se pueden utilizar en la solicitud de origen cruzado.

access_control_allow_headers

Qué cabeceras se pueden enviar con la solicitud de origen cruzado.

access_control_allow_methods

Qué métodos se pueden utilizar para la solicitud de origen cruzado.

access_control_allow_origin

El origen o “*” para cualquier origen que pueda hacer peticiones de origen cruzado.

access_control_expose_headers

Qué cabeceras pueden ser compartidas por el navegador al código JavaScript.

access_control_max_age

La edad máxima en segundos que la configuración del control de acceso puede ser almacenada en caché.

add_etag(overwrite=False, weak=False)

Añade una etiqueta electrónica para la respuesta actual si todavía no hay ninguna.

Changelog

Distinto en la versión 2.0: Se utiliza SHA-1 para generar el valor. MD5 puede no estar disponible en algunos entornos.

Parámetros
Tipo del valor devuelto

None

age

El campo de encabezado de respuesta Age transmite la estimación del remitente sobre el tiempo transcurrido desde que se generó la respuesta (o su revalidación) en el servidor de origen.

Los valores de edad son enteros decimales no negativos que representan el tiempo en segundos.

property allow: werkzeug.datastructures.HeaderSet

El campo Allow entity-header enumera el conjunto de métodos admitidos por el recurso identificado por la Request-URI. El propósito de este campo es estrictamente informar al destinatario de los métodos válidos asociados con el recurso. Un campo de cabecera Allow DEBE estar presente en una respuesta 405 (Method Not Allowed).

property cache_control: werkzeug.datastructures.ResponseCacheControl

El campo Cache-Control general-header se utiliza para especificar las directivas que DEBEN ser obedecidas por todos los mecanismos de almacenamiento en caché a lo largo de la cadena de solicitud/respuesta.

calculate_content_length()

Devuelve la longitud del contenido si está disponible o None en caso contrario.

Tipo del valor devuelto

Optional[int]

call_on_close(func)

Añade una función a la lista interna de funciones que deben ser llamadas como parte del cierre de la respuesta. Desde la versión 0.7 esta función también devuelve la función que se pasó para que esta pueda ser utilizada como un decorador.

Changelog

Nuevo en la versión 0.6.

Parámetros

func (Callable[[], Any]) –

Tipo del valor devuelto

Callable[[], Any]

close()

Cierre la respuesta envuelta si es posible. También puedes utilizar el objeto en una sentencia with que lo cerrará automáticamente.

Changelog

Nuevo en la versión 0.9: Ahora se puede utilizar en una declaración con.

Tipo del valor devuelto

None

content_encoding

El campo de cabecera de entidad Content-Encoding se utiliza como modificador del tipo de medio. Cuando está presente, su valor indica qué codificaciones de contenido adicionales se han aplicado al cuerpo de la entidad y, por tanto, qué mecanismos de descodificación deben aplicarse para obtener el tipo de medio al que se refiere el campo de cabecera Content-Type.

property content_language: werkzeug.datastructures.HeaderSet

El campo Content-Language de la cabecera de la entidad describe la(s) lengua(s) natural(es) de los destinatarios de la entidad adjunta. Tenga en cuenta que esto podría no ser equivalente a todos los idiomas utilizados dentro del cuerpo de la entidad.

content_length

El campo Content-Length de la cabecera de la entidad indica el tamaño del cuerpo de la entidad, en número decimal de OCTETs, enviado al destinatario o, en el caso del método HEAD, el tamaño del cuerpo de la entidad que se habría enviado si la petición hubiera sido un GET.

content_location

El campo de cabecera de entidad Content-Location PUEDE utilizarse para proporcionar la ubicación del recurso para la entidad incluida en el mensaje cuando dicha entidad es accesible desde una ubicación distinta del URI del recurso solicitado.

content_md5

El campo de cabecera de entidad Content-MD5, tal y como se define en el RFC 1864, es un compendio MD5 del cuerpo de la entidad con el fin de proporcionar una comprobación de integridad del mensaje de extremo a extremo (MIC) del cuerpo de la entidad. (Nota: un MIC es bueno para detectar modificaciones accidentales del cuerpo de la entidad en tránsito, pero no es a prueba de ataques maliciosos).

property content_range: werkzeug.datastructures.ContentRange

La cabecera Content-Range como objeto ContentRange. Disponible incluso si la cabecera no está establecida.

Changelog

Nuevo en la versión 0.7.

property content_security_policy: werkzeug.datastructures.ContentSecurityPolicy

La cabecera Content-Security-Policy como objeto ContentSecurityPolicy. Disponible incluso si la cabecera no está establecida.

La cabecera Content-Security-Policy añade una capa adicional de seguridad para ayudar a detectar y mitigar ciertos tipos de ataques.

property content_security_policy_report_only: werkzeug.datastructures.ContentSecurityPolicy

La cabecera Content-Security-policy-report-only como objeto ContentSecurityPolicy. Disponible incluso si la cabecera no está establecida.

La cabecera Content-Security-Policy-Report-Only añade una política csp que no se aplica, pero que se notifica, ayudando así a detectar ciertos tipos de ataques.

content_type

El campo Content-Type de la cabecera de la entidad indica el tipo de medio del cuerpo de la entidad enviado al destinatario o, en el caso del método HEAD, el tipo de medio que se habría enviado si la solicitud hubiera sido un GET.

cross_origin_embedder_policy

Evita que un documento cargue cualquier recurso de origen cruzado que no conceda explícitamente el permiso al documento. Los valores deben ser miembros de la clase werkzeug.http.COEP enum.

cross_origin_opener_policy

Permite controlar el uso compartido del grupo de contexto de navegación con documentos de origen cruzado. Los valores deben ser miembros de la clase werkzeug.http.COOP enum.

property data: Union[bytes, str]

Un descriptor que llama a get_data() y set_data().

date

El campo de cabecera general Date representa la fecha y hora en la que se originó el mensaje, teniendo la misma semántica que orig-date en RFC 822.

Changelog

Distinto en la versión 2.0: El objeto datetime tiene en cuenta la zona horaria.

Borrar una cookie. Falla silenciosamente si la clave no existe.

Parámetros
  • key (str) – la clave (nombre) de la cookie que se va a eliminar.

  • path (str) – si la cookie que debe ser eliminada estaba limitada a una ruta, la ruta tiene que ser definida aquí.

  • domain (Optional[str]) – si la cookie que debe ser eliminada estaba limitada a un dominio, ese dominio tiene que ser definido aquí.

  • secure (bool) – Si es True, la cookie sólo estará disponible a través de HTTPS.

  • httponly (bool) – No permitir el acceso de JavaScript a la cookie.

  • samesite (Optional[str]) – Limitar el alcance de la cookie para que sólo se adjunte a las solicitudes que son «del mismo sitio».

Tipo del valor devuelto

None

direct_passthrough

Pasar el cuerpo de la respuesta directamente como el iterable WSGI. Esto puede usarse cuando el cuerpo es un archivo binario u otro iterable de bytes, para saltarse algunas comprobaciones innecesarias. Utilice send_file() en lugar de establecerlo manualmente.

expires

El campo «Expires entity-header» indica la fecha/hora a partir de la cual la respuesta se considera antigua. Una entrada de caché obsoleta normalmente no puede ser devuelta por una caché.

Changelog

Distinto en la versión 2.0: El objeto datetime tiene en cuenta la zona horaria.

classmethod force_type(response, environ=None)

Hacer que la respuesta WSGI sea un objeto de respuesta de la clase actual. Werkzeug utilizará la Response internamente en muchas situaciones como las excepciones. Si llamas a get_response() en una excepción obtendrás un objeto Response normal, incluso si estás usando una subclase personalizada.

Este método puede imponer un tipo de respuesta dado, y también convertirá callables WSGI arbitrarios en objetos de respuesta si se proporciona un entorno:

# convert a Werkzeug response object into an instance of the
# MyResponseClass subclass.
response = MyResponseClass.force_type(response)

# convert any WSGI application into a response object
response = MyResponseClass.force_type(response, environ)

Esto es especialmente útil si quieres posprocesar las respuestas en el despachador principal y utilizar la funcionalidad proporcionada por tu subclase.

¡Tenga en cuenta que esto modificará los objetos de respuesta en su lugar si es posible!

Parámetros
  • response (Response) – un objeto de respuesta o aplicación wsgi.

  • environ (Optional[WSGIEnvironment]) – un objeto de entorno WSGI.

Returns

un objeto de respuesta.

Tipo del valor devuelto

Response

freeze()

Prepara el objeto de respuesta para ser decapado. Hace lo siguiente:

  • Almacena la respuesta en una lista, ignorando implicity_sequence_conversion y direct_passthrough.

  • Establece la cabecera Content-Length.

  • Genera una cabecera ETag si aún no se ha establecido una.

Changelog

Distinto en la versión 2.1: Se ha eliminado el parámetro no_etag.

Distinto en la versión 2.0: Se añade una cabecera ETag, el parámetro no_etag está obsoleto y se eliminará en Werkzeug 2.1.

Distinto en la versión 0.6: La cabecera Content-Length se ha establecido.

Tipo del valor devuelto

None

classmethod from_app(app, environ, buffered=False)

Crea un nuevo objeto de respuesta a partir de la salida de una aplicación. Esto funciona mejor si le pasas una aplicación que devuelva un generador todo el tiempo. A veces las aplicaciones pueden utilizar la llamada write() devuelta por la función start_response. Esto trata de resolver estos casos extremos automáticamente. Pero si no obtienes la salida esperada, deberías poner buffered a True, lo que refuerza el buffering.

Parámetros
  • app (WSGIApplication) – la aplicación WSGI a ejecutar.

  • environ (WSGIEnvironment) – el entorno WSGI contra el que se va a ejecutar.

  • buffered (bool) – se establece como True para reforzar el buffering.

Returns

un objeto de respuesta.

Tipo del valor devuelto

Response

get_app_iter(environ)

Devuelve el iterador de la solicitud para el entorno dado. Dependiendo del método de solicitud y del código de estado actual, el valor de retorno podría ser una respuesta vacía en lugar de la de la respuesta.

Si el método de solicitud es HEAD o el código de estado está en un rango en el que la especificación HTTP requiere una respuesta vacía, se devuelve un iterable vacío.

Changelog

Nuevo en la versión 0.6.

Parámetros

environ (WSGIEnvironment) – el entorno WSGI de la solicitud.

Returns

un iterable de respuesta.

Tipo del valor devuelto

Iterable[bytes]

get_data(as_text=False)

La representación en forma de cadena del cuerpo de la respuesta. Cada vez que se llama a esta propiedad, el iterable de la respuesta se codifica y se aplana. Esto puede dar lugar a un comportamiento no deseado si se transmiten grandes datos.

Este comportamiento puede desactivarse estableciendo implicit_sequence_conversion a False.

Si as_text se establece como True el valor de retorno será una cadena decodificada.

Changelog

Nuevo en la versión 0.9.

Parámetros

as_text (bool) –

Tipo del valor devuelto

Union[bytes, str]

get_etag()

Devuelve una tupla de la forma (etag, is_weak). Si no hay ETag el valor de retorno es (None, None).

Tipo del valor devuelto

Union[Tuple[str, bool], Tuple[None, None]]

get_json(force=False, silent=False)

Analiza data como JSON. Útil durante las pruebas.

Si el mimetype no indica JSON (application/json, véase is_json), devuelve None.

A diferencia de Request.get_json(), el resultado no se almacena en caché.

Parámetros
  • force (bool) – Ignora el mimetype e intenta siempre parsear JSON.

  • silent (bool) – Silencia los errores de análisis y devuelve None en su lugar.

Tipo del valor devuelto

Optional[Any]

get_wsgi_headers(environ)

Se llama automáticamente justo antes de que se inicie la respuesta y devuelve las cabeceras modificadas para el entorno dado. Devuelve una copia de las cabeceras de la respuesta con algunas modificaciones aplicadas si es necesario.

Por ejemplo, la cabecera location (si está presente) se une a la URL raíz del entorno. También la longitud del contenido se pone automáticamente a cero aquí para ciertos códigos de estado.

Changelog

Distinto en la versión 0.6: Anteriormente esa función se llamaba fix_headers y modificaba el objeto de respuesta en su lugar. Además, desde la versión 0.6, los IRIs en las cabeceras location y content-location se manejan correctamente.

También a partir de la versión 0.6, Werkzeug intentará establecer la longitud del contenido si es capaz de averiguarlo por sí mismo. Este es el caso si todas las cadenas en el iterable de respuesta ya están codificadas y el iterable está en el buffer.

Parámetros

environ (WSGIEnvironment) – el entorno WSGI de la solicitud.

Returns

devuelve un nuevo objeto Headers.

Tipo del valor devuelto

werkzeug.datastructures.Headers

get_wsgi_response(environ)

Devuelve la respuesta final de WSGI como una tupla. El primer elemento de la tupla es el iterador de la aplicación, el segundo el estado y el tercero la lista de cabeceras. La respuesta devuelta se crea especialmente para el entorno dado. Por ejemplo, si el método de solicitud en el entorno WSGI es 'HEAD' la respuesta estará vacía y sólo estarán presentes las cabeceras y el código de estado.

Changelog

Nuevo en la versión 0.6.

Parámetros

environ (WSGIEnvironment) – el entorno WSGI de la solicitud.

Returns

an (app_iter, status, headers) tuple.

Tipo del valor devuelto

Tuple[Iterable[bytes], str, List[Tuple[str, str]]]

property is_json: bool

Comprueba si el mimetype indica datos JSON, ya sea application/json o application/*+json.

property is_sequence: bool

Si el iterador se almacena en un buffer, esta propiedad será True. Un objeto de respuesta considerará que un iterador está almacenado en buffer si el atributo de la respuesta es una lista o tupla.

Changelog

Nuevo en la versión 0.6.

property is_streamed: bool

Si la respuesta es «streamed» (la respuesta no es un iterable con información de longitud) esta propiedad es True. En este caso, streamed significa que no hay información sobre el número de iteraciones. Normalmente es True si se pasa un generador al objeto de respuesta.

Esto es útil para comprobar antes de aplicar algún tipo de filtrado de correos que no debería tener lugar para las respuestas transmitidas.

iter_encoded()

Itera la respuesta codificada con la codificación de la respuesta. Si el objeto de respuesta se invoca como aplicación WSGI, el valor de retorno de este método se utiliza como iterador de la aplicación, a menos que se haya activado direct_passthrough.

Tipo del valor devuelto

Iterator[bytes]

property json: Optional[Any]

Los datos JSON analizados si mimetype indica JSON (application/json, véase is_json).

Llama a get_json() con argumentos por defecto.

last_modified

El campo de cabecera de entidad Last-Modified indica la fecha y hora en la que el servidor de origen cree que la variante fue modificada por última vez.

Changelog

Distinto en la versión 2.0: El objeto datetime tiene en cuenta la zona horaria.

location

El campo Location response-header se utiliza para redirigir al destinatario a una ubicación distinta de la Request-URI para completar la solicitud o identificar un nuevo recurso.

make_conditional(request_or_environ, accept_ranges=False, complete_length=None)

Hacer que la respuesta esté condicionada a la solicitud. Este método funciona mejor si ya se ha definido una etiqueta electrónica para la respuesta. El método add_etag puede utilizarse para ello. Si se llama sin etag sólo se establece la cabecera de la fecha.

Esto no hace nada si el método de solicitud en la petición o el entorno es cualquier cosa que no sea GET o HEAD.

Para obtener un rendimiento óptimo en el manejo de las solicitudes de rango, se recomienda que su objeto de datos de respuesta implemente los métodos seekable, seek y tell como se describe en io.IOBase. Los objetos devueltos por wrap_file() implementan automáticamente estos métodos.

No elimina el cuerpo de la respuesta porque eso es algo que la función __call__() hace por nosotros automáticamente.

Devuelve self para que puedas hacer return resp.make_conditional(req) pero modificando el objeto en el lugar.

Parámetros
  • request_or_environ (Union[WSGIEnvironment, Request]) – un objeto de solicitud o entorno WSGI que se utilizará para condicionar la respuesta.

  • accept_ranges (Union[bool, str]) – Este parámetro dicta el valor de la cabecera Accept-Ranges. Si es False (por defecto), la cabecera no se establece. Si es True, se establecerá como "bytes". Si None, se establecerá como "none". Si es una cadena, se utilizará este valor.

  • complete_length (Optional[int]) – Se utilizará sólo en las solicitudes válidas de Range. Establecerá el valor de longitud completa de Content-Range y calculará el valor real de Content-Length. Este parámetro es obligatorio para completar con éxito las solicitudes de rango.

levanta

RequestedRangeNotSatisfiable si la cabecera Range no ha podido ser analizada o satisfecha.

Tipo del valor devuelto

Response

Changelog

Distinto en la versión 2.0: El procesamiento del rango se salta si la longitud es 0 en lugar de lanzar un error 416 de rango no satisfactorio.

make_sequence()

Convierte el iterador de respuesta en una lista. Por defecto, esto ocurre automáticamente si es necesario. Si implicit_sequence_conversion está deshabilitado, este método no se llama automáticamente y algunas propiedades podrían lanzar excepciones. Esto también codifica todos los elementos.

Changelog

Nuevo en la versión 0.6.

Tipo del valor devuelto

None

Vista de sólo lectura de la clave de configuración MAX_COOKIE_SIZE.

Ver max_cookie_size en la documentación de Werkzeug.

property mimetype: Optional[str]

El mimetype (tipo de contenido sin charset, etc.)

property mimetype_params: Dict[str, str]

Los parámetros de mimetype como dict. Por ejemplo, si el tipo de contenido es text/html; charset=utf-8 los parámetros serían {'charset': 'utf-8'}.

Changelog

Nuevo en la versión 0.5.

response: t.Union[t.Iterable[str], t.Iterable[bytes]]

The response body to send as the WSGI iterable. A list of strings or bytes represents a fixed-length response, any other iterable is a streaming response. Strings are encoded to bytes as UTF-8.

Do not set to a plain string or bytes, that will cause sending the response to be very inefficient as it will iterate one byte at a time.

property retry_after: Optional[datetime.datetime]

El campo Retry-After response-header puede utilizarse con una respuesta 503 (Service Unavailable) para indicar cuánto tiempo se espera que el servicio no esté disponible para el cliente solicitante.

Tiempo en segundos hasta el vencimiento o la fecha.

Changelog

Distinto en la versión 2.0: El objeto datetime tiene en cuenta la zona horaria.

Establece una cookie.

Se produce una advertencia si el tamaño de la cabecera de la cookie excede max_cookie_size, pero la cabecera seguirá siendo establecida.

Parámetros
  • key (str) – la clave (nombre) de la cookie que se va a establecer.

  • value (str) – el valor de la cookie.

  • max_age (Optional[Union[datetime.timedelta, int]]) – debe ser un número de segundos, o None (por defecto) si la cookie debe durar sólo mientras la sesión del navegador del cliente.

  • expires (Optional[Union[str, datetime.datetime, int, float]]) – debe ser un objeto datetime o una marca de tiempo UNIX.

  • path (Optional[str]) – limita la cookie a una ruta determinada, por defecto abarcará todo el dominio.

  • domain (Optional[str]) – si desea establecer una cookie multidominio. Por ejemplo, dominio=".ejemplo.com" establecerá una cookie legible por el dominio www.example.com, foo.ejemplo.com, etc. En caso contrario, una cookie sólo podrá ser leída por el dominio que la estableció.

  • secure (bool) – Si es True, la cookie sólo estará disponible a través de HTTPS.

  • httponly (bool) – No permitir el acceso de JavaScript a la cookie.

  • samesite (Optional[str]) – Limitar el alcance de la cookie para que sólo se adjunte a las solicitudes que son «del mismo sitio».

Tipo del valor devuelto

None

set_data(value)

Establece una nueva cadena como respuesta. El valor debe ser una cadena o bytes. Si se establece una cadena, se codifica con el conjunto de caracteres de la respuesta (utf-8 por defecto).

Changelog

Nuevo en la versión 0.9.

Parámetros

value (Union[bytes, str]) –

Tipo del valor devuelto

None

set_etag(etag, weak=False)

Establece el etag, y anula el anterior si lo hubiera.

Parámetros
Tipo del valor devuelto

None

property status: str

El código de estado HTTP como una cadena.

property status_code: int

El código de estado HTTP como un número.

property stream: werkzeug.wrappers.response.ResponseStream

La respuesta iterable como flujo de sólo escritura.

property vary: werkzeug.datastructures.HeaderSet

El valor del campo Vary indica el conjunto de campos de la cabecera de la solicitud que determina completamente, mientras la respuesta está fresca, si se permite que una caché utilice la respuesta para responder a una solicitud posterior sin revalidación.

property www_authenticate: werkzeug.datastructures.WWWAuthenticate

La cabecera WW-Authenticate en forma analizada.

Sesiones

Si has establecido Flask.secret_key (o lo has configurado desde SECRET_KEY) puedes utilizar sesiones en las aplicaciones Flask. Una sesión permite recordar información de una solicitud a otra. La forma en que Flask hace esto es utilizando una cookie firmada. El usuario puede ver el contenido de la sesión, pero no puede modificarlo a menos que conozca la clave secreta, así que asegúrate de establecerla con algo complejo e indescifrable.

Para acceder a la sesión actual puede utilizar el objeto session:

class flask.session

El objeto de sesión funciona de forma muy parecida a un dict ordinario, con la diferencia de que lleva la cuenta de las modificaciones.

Se trata de un prox. Consulte Notas sobre los apoderados para obtener más información.

Los siguientes atributos son interesantes:

new

True si la sesión es nueva, False en caso contrario.

modified

True si el objeto de sesión ha detectado una modificación. Tenga en cuenta que las modificaciones en las estructuras mutables no se recogen automáticamente, en esa situación tiene que establecer explícitamente el atributo a True usted mismo. Aquí un ejemplo:

# this change is not picked up because a mutable object (here
# a list) is changed.
session['objects'].append(42)
# so mark it as modified yourself
session.modified = True
permanent

Si se establece como True la sesión vive durante permanent_session_lifetime segundos. El valor por defecto es de 31 días. Si se establece en False (que es el valor por defecto) la sesión se borrará cuando el usuario cierre el navegador.

Interfaz de la sesión

Changelog

Nuevo en la versión 0.8.

La interfaz de sesión proporciona una forma sencilla de reemplazar la implementación de sesión que utiliza Flask.

class flask.sessions.SessionInterface

La interfaz básica que tienes que implementar para reemplazar la interfaz de sesión por defecto que utiliza la implementación de securecookie de werkzeug. Los únicos métodos que tienes que implementar son open_session() y save_session(), los demás tienen útiles valores por defecto que no necesitas cambiar.

El objeto de sesión devuelto por el método open_session() tiene que proporcionar una interfaz similar a la de un diccionario, además de las propiedades y métodos de la SessionMixin. Recomendamos simplemente subclasificar un diccionario y añadir ese mixin:

class Session(dict, SessionMixin):
    pass

Si open_session() devuelve None Flask llamará a make_null_session() para crear una sesión que actúe como reemplazo si el soporte de sesión no puede funcionar porque no se cumple algún requisito. La clase NullSession por defecto que se crea se quejará de que no se ha establecido la clave secreta.

Para reemplazar la interfaz de sesión en una aplicación todo lo que tienes que hacer es asignar flask.Flask.session_interface:

app = Flask(__name__)
app.session_interface = MySessionInterface()

Se pueden enviar y gestionar simultáneamente varias solicitudes con la misma sesión. Al implementar una nueva interfaz de sesión, hay que tener en cuenta si las lecturas o escrituras en el almacén de respaldo deben estar sincronizadas. No se garantiza el orden en el que se abre o guarda la sesión para cada solicitud, se producirá en el orden en el que las solicitudes comienzan y terminan de procesarse.

Changelog

Nuevo en la versión 0.8.

Devuelve el dominio que debe establecerse para la cookie de sesión.

Utiliza SESSION_COOKIE_DOMAIN si está configurado, de lo contrario vuelve a detectar el dominio basado en SERVER_NAME.

Una vez detectado (o si no se establece en absoluto), SESSION_COOKIE_DOMAIN se actualiza para evitar volver a ejecutar la lógica.

Parámetros

app (Flask) –

Tipo del valor devuelto

Optional[str]

Devuelve True si la cookie de sesión debe ser httponly. Actualmente sólo devuelve el valor de la varilla de configuración SESSION_COOKIE_HTTPONLY.

Parámetros

app (Flask) –

Tipo del valor devuelto

bool

Devuelve el nombre de la cookie de sesión.

Utiliza app.session_cookie_name que se establece como SESSION_COOKIE_NAME

Parámetros

app (Flask) –

Tipo del valor devuelto

str

Devuelve la ruta para la que la cookie debe ser válida. La implementación por defecto utiliza el valor de la var de configuración SESSION_COOKIE_PATH si está establecida, y vuelve a APPLICATION_ROOT o utiliza / si es None.

Parámetros

app (Flask) –

Tipo del valor devuelto

str

Devuelve 'Strict' o 'Lax' si la cookie debe utilizar el atributo SameSite. Actualmente sólo devuelve el valor del ajuste SESSION_COOKIE_SAMESITE.

Parámetros

app (Flask) –

Tipo del valor devuelto

str

Devuelve True si la cookie debe ser segura. Actualmente sólo devuelve el valor del ajuste SESSION_COOKIE_SECURE.

Parámetros

app (Flask) –

Tipo del valor devuelto

bool

get_expiration_time(app, session)

Un método de ayuda que devuelve una fecha de caducidad para la sesión o None si la sesión está vinculada a la sesión del navegador. La implementación por defecto devuelve now + el tiempo de vida de la sesión permanente configurada en la aplicación.

Parámetros
Tipo del valor devuelto

Optional[datetime.datetime]

is_null_session(obj)

Comprueba si un objeto dado es una sesión nula. No se pide que se guarden las sesiones nulas.

Comprueba si el objeto es una instancia de null_session_class por defecto.

Parámetros

obj (object) –

Tipo del valor devuelto

bool

make_null_session(app)

Crea una sesión nula que actúa como objeto de reemplazo si el soporte de la sesión real no pudo ser cargado debido a un error de configuración. Esto ayuda principalmente a la experiencia del usuario porque el trabajo de la sesión nula es seguir soportando la búsqueda sin quejarse, pero las modificaciones se responden con un mensaje de error útil de lo que falló.

Esto crea una instancia de null_session_class por defecto.

Parámetros

app (Flask) –

Tipo del valor devuelto

flask.sessions.NullSession

null_session_class

make_null_session() buscará aquí la clase que debe crearse cuando se solicita una sesión nula. Del mismo modo, el método is_null_session() realizará una comprobación de tipo con respecto a esta clase.

alias of flask.sessions.NullSession

open_session(app, request)

Se llama al principio de cada solicitud, después de empujar el contexto de la solicitud, antes de hacer coincidir la URL.

Debe devolver un objeto que implemente una interfaz tipo diccionario, así como la interfaz SessionMixin.

Esto devolverá None para indicar que la carga falló de alguna manera que no es inmediatamente un error. El contexto de la solicitud volverá a utilizar make_null_session() en este caso.

Parámetros
Tipo del valor devuelto

Optional[flask.sessions.SessionMixin]

pickle_based = False

Una bandera que indica si la interfaz de sesión está basada en pickle. Esto puede ser utilizado por las extensiones de Flask para tomar una decisión con respecto a cómo tratar el objeto de sesión.

Changelog

Nuevo en la versión 0.10.

save_session(app, session, response)

Se llama al final de cada solicitud, después de generar una respuesta, antes de eliminar el contexto de la solicitud. Se omite si is_null_session() devuelve True.

Parámetros
Tipo del valor devuelto

None

Utilizado por los backends de sesión para determinar si se debe establecer una cabecera Set-Cookie para esta cookie de sesión para esta respuesta. Si la sesión ha sido modificada, se establece la cookie. Si la sesión es permanente y la configuración SESSION_REFRESH_EACH_REQUEST es verdadera, la cookie se establece siempre.

Esta comprobación suele omitirse si la sesión se ha eliminado.

Changelog

Nuevo en la versión 0.11.

Parámetros
Tipo del valor devuelto

bool

class flask.sessions.SecureCookieSessionInterface

La interfaz de sesión por defecto que almacena las sesiones en cookies firmadas a través del módulo itsdangerous.

static digest_method(string=b'', *, usedforsecurity=True)

la función hash a utilizar para la firma. El valor por defecto es sha1

key_derivation = 'hmac'

el nombre de la derivación de clave soportada por itsdangerous. El valor por defecto es hmac.

open_session(app, request)

Se llama al principio de cada solicitud, después de empujar el contexto de la solicitud, antes de hacer coincidir la URL.

Debe devolver un objeto que implemente una interfaz tipo diccionario, así como la interfaz SessionMixin.

Esto devolverá None para indicar que la carga falló de alguna manera que no es inmediatamente un error. El contexto de la solicitud volverá a utilizar make_null_session() en este caso.

Parámetros
Tipo del valor devuelto

Optional[flask.sessions.SecureCookieSession]

salt = 'cookie-session'

la sal que debe aplicarse sobre la clave secreta para la firma de las sesiones basadas en cookies.

save_session(app, session, response)

Se llama al final de cada solicitud, después de generar una respuesta, antes de eliminar el contexto de la solicitud. Se omite si is_null_session() devuelve True.

Parámetros
Tipo del valor devuelto

None

serializer = <flask.json.tag.TaggedJSONSerializer object>

Un serializador de Python para la carga útil. El valor por defecto es un serializador compacto derivado de JSON con soporte para algunos tipos extra de Python como objetos datetime o tuplas.

session_class

alias of flask.sessions.SecureCookieSession

class flask.sessions.SecureCookieSession(initial=None)

Clase base para sesiones basadas en cookies firmadas.

Este backend de sesión establecerá los atributos modified y accessed. No se puede saber de forma fiable si una sesión es nueva (frente a una vacía), por lo que new permanece codificado en False.

Parámetros

initial (Any) –

Tipo del valor devuelto

None

accessed = False

que permite a los proxies de caché almacenar en caché diferentes páginas para diferentes usuarios.

get(key, default=None)

Devuelve el valor de la clave si la clave está en el diccionario, si no, por defecto.

Parámetros
Tipo del valor devuelto

Any

modified = False

Cuando se modifican los datos, esto se establece como True. Sólo se rastrea el diccionario de sesión en sí mismo; si la sesión contiene datos mutables (por ejemplo, un dict anidado) entonces esto debe ser establecido a True manualmente cuando se modifican esos datos. La cookie de sesión sólo se escribirá en la respuesta si es True.

setdefault(key, default=None)

Inserta la clave con un valor por defecto si la clave no está en el diccionario.

Devuelve el valor de la clave si la clave está en el diccionario, si no, por defecto.

Parámetros
Tipo del valor devuelto

Any

class flask.sessions.NullSession(initial=None)

Clase utilizada para generar mensajes de error más agradables si las sesiones no están disponibles. Seguirá permitiendo el acceso de sólo lectura a la sesión vacía, pero fallará al establecerla.

Parámetros

initial (Any) –

Tipo del valor devuelto

None

clear() None.  Remove all items from D.
Parámetros
  • args (Any) –

  • kwargs (Any) –

Tipo del valor devuelto

te.NoReturn

pop(k[, d]) v, remove specified key and return the corresponding value.

If the key is not found, return the default if given; otherwise, raise a KeyError.

Parámetros
  • args (Any) –

  • kwargs (Any) –

Tipo del valor devuelto

te.NoReturn

popitem(*args, **kwargs)

Elimina y devuelve un par (clave, valor) como una 2-tupla.

Los pares se devuelven en orden LIFO (last-in, first-out). Se produce un KeyError si el dict está vacío.

Parámetros
  • args (Any) –

  • kwargs (Any) –

Tipo del valor devuelto

te.NoReturn

setdefault(*args, **kwargs)

Inserta la clave con un valor por defecto si la clave no está en el diccionario.

Devuelve el valor de la clave si la clave está en el diccionario, si no, por defecto.

Parámetros
  • args (Any) –

  • kwargs (Any) –

Tipo del valor devuelto

te.NoReturn

update([E, ]**F) None.  Update D from dict/iterable E and F.

Si E está presente y tiene un método .keys(), entonces hace: for k en E: D[k] = E[k] Si E está presente y carece de un método .keys(), entonces hace: for k, v en E: D[k] = v En cualquier caso, esto es seguido por: for k en F: D[k] = F[k]

Parámetros
  • args (Any) –

  • kwargs (Any) –

Tipo del valor devuelto

te.NoReturn

class flask.sessions.SessionMixin

Amplía un diccionario básico con atributos de sesión.

accessed = True

Algunas implementaciones pueden detectar cuando se leen o escriben datos de la sesión y establecer esto cuando sucede. El mixin por defecto está codificado en True.

modified = True

Algunas implementaciones pueden detectar cambios en la sesión y establecer esto cuando sucede. El mixin por defecto está codificado en True.

property permanent: bool

Esto refleja la clave «_permanente» en el dict.

Aviso

La clave de configuración PERMANENT_SESSION_LIFETIME también puede ser un entero a partir de Flask 0.8. Puede capturar esto usted mismo o utilizar el atributo permanent_session_lifetime en la aplicación que convierte el resultado en un número entero automáticamente.

Test Client

class flask.testing.FlaskClient(*args, **kwargs)

Funciona como un cliente de prueba Werkzeug normal, pero tiene conocimiento de los contextos de Flask para aplazar la limpieza del contexto de la solicitud hasta el final de un bloque with. Para información general sobre cómo usar esta clase, consulta werkzeug.test.Client.

Changelog

Distinto en la versión 0.12: app.test_client() incluye un entorno predeterminado, que se puede establecer después de la instanciación del objeto app.test_client() en client.environ_base.

El uso básico se describe en el capítulo Prueba de aplicaciones Flask.

Parámetros
  • args (Any) –

  • kwargs (Any) –

Tipo del valor devuelto

None

open(*args, buffered=False, follow_redirects=False, **kwargs)

Genera un environ dict a partir de los argumentos dados, realiza una petición a la aplicación que lo utiliza y devuelve la respuesta.

Parámetros
  • args (Any) – Se pasa a EnvironBuilder para crear el entorno para la solicitud. Si se pasa un solo arg, puede ser un EnvironBuilder existente o un environ dict.

  • buffered (bool) – Convierte el iterador devuelto por la aplicación en una lista. Si el iterador tiene un método close(), se llama automáticamente.

  • follow_redirects (bool) – Realiza peticiones adicionales para seguir las redirecciones HTTP hasta que se devuelva un estado de no redirección. TestResponse.history lista las respuestas intermedias.

  • kwargs (Any) –

Tipo del valor devuelto

TestResponse

Changelog

Distinto en la versión 2.1: Se ha eliminado el parámetro as_tuple.

Distinto en la versión 2.0: as_tuple está obsoleto y será eliminado en Werkzeug 2.1. Utilice TestResponse.request y request.environ en su lugar.

Distinto en la versión 2.0: El flujo de entrada de la solicitud se cierra al llamar a response.close(). Los flujos de entrada para las redirecciones se cierran automáticamente.

Distinto en la versión 0.5: Si se proporciona un dict como archivo en el dict para el parámetro data el tipo de contenido debe llamarse content_type en lugar de mimetype. Este cambio se ha realizado por coherencia con werkzeug.FileWrapper.

Distinto en la versión 0.5: Se ha añadido el parámetro follow_redirects.

session_transaction(*args, **kwargs)

Cuando se utiliza en combinación con una sentencia with se abre una transacción de sesión. Esto se puede utilizar para modificar la sesión que utiliza el cliente de prueba. Una vez que se abandona el bloque with se vuelve a guardar la sesión.

with client.session_transaction() as session:
    session['value'] = 42

Internamente esto se implementa pasando por un contexto de solicitud de prueba temporal y como el manejo de la sesión podría depender de las variables de la solicitud, esta función acepta los mismos argumentos que test_request_context() que se pasan directamente.

Parámetros
  • args (Any) –

  • kwargs (Any) –

Tipo del valor devuelto

Generator[flask.sessions.SessionMixin, None, None]

Test CLI Runner

class flask.testing.FlaskCliRunner(app, **kwargs)

Un CliRunner para probar los comandos CLI de una aplicación Flask. Normalmente se crea usando test_cli_runner(). Ver Ejecución de comandos con el CLI Runner.

Parámetros
Tipo del valor devuelto

None

invoke(cli=None, args=None, **kwargs)

Invoca un comando CLI en un entorno aislado. Ver CliRunner.invoke para la documentación completa del método. Consulte Ejecución de comandos con el CLI Runner para ver ejemplos.

Si el argumento obj no se da, pasa una instancia de ScriptInfo que sabe cómo cargar la aplicación Flask que se está probando.

Parámetros
  • cli (Optional[Any]) – Objeto de comando a invocar. Por defecto es el grupo cli de la aplicación.

  • args (Optional[Any]) – Lista de cadenas para invocar el comando.

  • kwargs (Any) –

Returns

un objeto Result.

Tipo del valor devuelto

Any

Globales de aplicación

Para compartir datos que son válidos sólo para una petición de una función a otra, una variable global no es suficiente porque se rompería en entornos con hilos. Flask te proporciona un objeto especial que asegura que sólo es válido para la petición activa y que devolverá valores diferentes para cada petición. En pocas palabras: hace lo correcto, como lo hace para request y session.

flask.g

Un objeto de espacio de nombres que puede almacenar datos durante un contexto de aplicación. Es una instancia de Flask.app_ctx_globals_class, que por defecto es ctx._AppCtxGlobals.

Este es un buen lugar para almacenar recursos durante una petición. Por ejemplo, una función before_request podría cargar un objeto de usuario a partir de un id de sesión, y luego establecer g.user para ser utilizado en la función de vista.

Se trata de un proxy. Consulte Notas sobre los apoderados para obtener más información.

Changelog

Distinto en la versión 0.10: Vinculado al contexto de la aplicación en lugar del contexto de la solicitud.

class flask.ctx._AppCtxGlobals

Un objeto simple. Se utiliza como espacio de nombres para almacenar datos durante un contexto de aplicación.

La creación de un contexto de aplicación crea automáticamente este objeto, que se pone a disposición como proxy g.

'key' in g

Comprueba si un atributo está presente.

Changelog

Nuevo en la versión 0.10.

iter(g)

Devuelve un iterador sobre los nombres de atributos.

Changelog

Nuevo en la versión 0.10.

get(name, default=None)

Obtener un atributo por su nombre, o un valor por defecto. Como dict.get().

Parámetros
  • name (str) – Nombre del atributo a obtener.

  • default (Optional[Any]) – Valor a devolver si el atributo no está presente.

Tipo del valor devuelto

Any

Changelog

Nuevo en la versión 0.10.

pop(name, default=<object object>)

Obtener y eliminar un atributo por su nombre. Como dict.pop().

Parámetros
  • name (str) – Nombre del atributo a reventar.

  • default (Any) – Valor a devolver si el atributo no está presente, en lugar de lanzar un KeyError.

Tipo del valor devuelto

Any

Changelog

Nuevo en la versión 0.11.

setdefault(name, default=None)

Obtiene el valor de un atributo si está presente, en caso contrario establece y devuelve un valor por defecto. Como dict.setdefault().

Parámetros
  • name (str) – Nombre del atributo a obtener.

  • default (Optional[Any]) – Valor a establecer y devolver si el atributo no está presente.

Tipo del valor devuelto

Any

Changelog

Nuevo en la versión 0.11.

Funciones y clases útiles

flask.current_app

Un proxy de la aplicación que gestiona la solicitud actual. Esto es útil para acceder a la aplicación sin necesidad de importarla, o si no se puede importar, como cuando se utiliza el patrón de fábrica de aplicaciones o en blueprints y extensiones.

Esto sólo está disponible cuando un contexto de aplicación es empujado. Esto ocurre automáticamente durante las solicitudes y los comandos CLI. Se puede controlar manualmente con app_context().

Se trata de un proxy. Consulte Notas sobre los apoderados para obtener más información.

flask.has_request_context()

Si usted tiene código que quiere probar si un contexto de solicitud está o no esta función puede ser utilizada. Por ejemplo, puede querer aprovechar la información de la solicitud si el objeto de solicitud está disponible, pero fallar silenciosamente si no está disponible.

class User(db.Model):

    def __init__(self, username, remote_addr=None):
        self.username = username
        if remote_addr is None and has_request_context():
            remote_addr = request.remote_addr
        self.remote_addr = remote_addr

También puede comprobar la veracidad de cualquiera de los objetos vinculados al contexto (como request o g):

class User(db.Model):

    def __init__(self, username, remote_addr=None):
        self.username = username
        if remote_addr is None and request:
            remote_addr = request.remote_addr
        self.remote_addr = remote_addr
Changelog

Nuevo en la versión 0.7.

Tipo del valor devuelto

bool

flask.copy_current_request_context(f)

Una función de ayuda que decora una función para retener el contexto de la solicitud actual. Esto es útil cuando se trabaja con greenlets. En el momento en que la función es decorada, se crea una copia del contexto de la solicitud y luego se empuja cuando la función es llamada. La sesión actual también se incluye en el contexto de solicitud copiado.

Ejemplo:

import gevent
from flask import copy_current_request_context

@app.route('/')
def index():
    @copy_current_request_context
    def do_some_work():
        # do some work here, it can access flask.request or
        # flask.session like you would otherwise in the view function.
        ...
    gevent.spawn(do_some_work)
    return 'Regular response'
Changelog

Nuevo en la versión 0.10.

Parámetros

f (Callable) –

Tipo del valor devuelto

Callable

flask.has_app_context()

Funciona como has_request_context() pero para el contexto de la aplicación. También puede hacer una comprobación booleana en el objeto current_app.

Changelog

Nuevo en la versión 0.9.

Tipo del valor devuelto

bool

flask.url_for(endpoint, *, _anchor=None, _method=None, _scheme=None, _external=None, **values)

Genera una URL al endpoint dado con los valores indicados.

Esto requiere una solicitud activa o un contexto de aplicación, y llama a current_app.url_for(). Consulte ese método para ver la documentación completa.

Parámetros
  • endpoint (str) – El nombre del endpoint asociado a la URL a generar. Si empieza por ., se utilizará el nombre del plano actual (si lo hay).

  • _anchor (Optional[str]) – Si se proporciona, se añade como #anchor a la URL.

  • _method (Optional[str]) – Si se da, genera la URL asociada a este método para el punto final.

  • _scheme (Optional[str]) – Si se da, la URL tendrá este esquema si es externa.

  • _external (Optional[bool]) – Si se da, prefiere que la URL sea interna (False) o requiere que sea externa (True). Las URLs externas incluyen el esquema y el dominio. Cuando no están en una solicitud activa, las URL son externas por defecto.

  • values (Any) – Valores a utilizar para las partes variables de la regla URL. Las claves desconocidas se añaden como argumentos de la cadena de consulta, como ?a=b&c=d.

Tipo del valor devuelto

str

Distinto en la versión 2.2: Llama a current_app.url_for, permitiendo que una aplicación anule el comportamiento.

Changelog

Distinto en la versión 0.10: Se ha añadido el parámetro scheme.

Distinto en la versión 0.9: Se han añadido los parámetros _anchor y _method.

Distinto en la versión 0.9: Llama a app.handle_url_build_error en los errores de construcción.

flask.abort(code, *args, **kwargs)

Lanza una HTTPException para el código de estado dado.

Si current_app está disponible, llamará a su objeto aborter, en caso contrario utilizará werkzeug.exceptions.abort().

Parámetros
  • code (Union[int, BaseResponse]) – El código de estado de la excepción, que debe registrarse en app.aborter.

  • args (Any) – Pasó a la excepción.

  • kwargs (Any) – Pasó a la excepción.

Tipo del valor devuelto

te.NoReturn

Nuevo en la versión 2.2: Llama a current_app.aborter si está disponible en lugar de utilizar siempre el abort por defecto de Werkzeug.

flask.redirect(location, code=302, Response=None)

Crea un objeto de respuesta de redirección.

Si current_app está disponible, utilizará su método redirect(), en caso contrario utilizará werkzeug.utils.redirect().

Parámetros
  • location (str) – La URL a la que se redirige.

  • code (int) – El código de estado de la redirección.

  • Response (Optional[Type[BaseResponse]]) – La clase de respuesta a utilizar. No se utiliza cuando está activa current_app, que utiliza app.response_class.

Tipo del valor devuelto

BaseResponse

Nuevo en la versión 2.2: Llama a current_app.redirect si está disponible en lugar de usar siempre el redirect por defecto de Werkzeug.

flask.make_response(*args)

A veces es necesario establecer cabeceras adicionales en una vista. Dado que las vistas no tienen que devolver objetos de respuesta sino que pueden devolver un valor que es convertido en un objeto de respuesta por el propio Flask, resulta complicado añadirle cabeceras. Se puede llamar a esta función en lugar de utilizar un retorno y se obtendrá un objeto respuesta que se puede utilizar para adjuntar cabeceras.

Si la vista tuviera este aspecto y quisiera añadir un nuevo encabezado:

def index():
    return render_template('index.html', foo=42)

Ahora puedes hacer algo así:

def index():
    response = make_response(render_template('index.html', foo=42))
    response.headers['X-Parachutes'] = 'parachutes are cool'
    return response

Esta función acepta los mismos argumentos que puede devolver una función de vista. Esto, por ejemplo, crea una respuesta con un código de error 404:

response = make_response(render_template('not_found.html'), 404)

El otro caso de uso de esta función es forzar el valor de retorno de una función de vista en una respuesta que es útil con los decoradores de vista:

response = make_response(view_function())
response.headers['X-Parachutes'] = 'parachutes are cool'

Internamente esta función hace lo siguiente:

Changelog

Nuevo en la versión 0.6.

Parámetros

args (Any) –

Tipo del valor devuelto

Response

flask.after_this_request(f)

Ejecuta una función después de esta solicitud. Esto es útil para modificar los objetos de respuesta. A la función se le pasa el objeto de respuesta y tiene que devolver el mismo o uno nuevo.

Ejemplo:

@app.route('/')
def index():
    @after_this_request
    def add_header(response):
        response.headers['X-Foo'] = 'Parachute'
        return response
    return 'Hello World!'

Esto es más útil si una función distinta de la función de la vista quiere modificar una respuesta. Por ejemplo, piensa en un decorador que quiera añadir algunas cabeceras sin convertir el valor de retorno en un objeto de respuesta.

Changelog

Nuevo en la versión 0.9.

Parámetros

f (Union[Callable[[flask.typing.ResponseClass], flask.typing.ResponseClass], Callable[[flask.typing.ResponseClass], Awaitable[flask.typing.ResponseClass]]]) –

Tipo del valor devuelto

Union[Callable[[flask.typing.ResponseClass], flask.typing.ResponseClass], Callable[[flask.typing.ResponseClass], Awaitable[flask.typing.ResponseClass]]]

flask.send_file(path_or_file, mimetype=None, as_attachment=False, download_name=None, conditional=True, etag=True, last_modified=None, max_age=None)

Enviar el contenido de un archivo al cliente.

El primer argumento puede ser una ruta de archivo o un objeto similar a un archivo. Las rutas son preferibles en la mayoría de los casos porque Werkzeug puede gestionar el archivo y obtener información extra de la ruta. Pasar un objeto tipo archivo requiere que el archivo se abra en modo binario, y es mayormente útil cuando se construye un archivo en memoria con io.BytesIO.

Nunca pases rutas de archivos proporcionadas por un usuario. Se asume que la ruta es de confianza, por lo que un usuario podría elaborar una ruta para acceder a un archivo que no era su intención. Utilice send_from_directory() para servir de forma segura las rutas solicitadas por el usuario desde un directorio.

Si el servidor WSGI establece un file_wrapper en environ, se utiliza, de lo contrario se utiliza el wrapper incorporado de Werkzeug. Alternativamente, si el servidor HTTP soporta X-Sendfile, configurando Flask con USE_X_SENDFILE = True le dirá al servidor que envíe la ruta dada, lo cual es mucho más eficiente que leerla en Python.

Parámetros
  • path_or_file (Union[os.PathLike, str, BinaryIO]) – La ruta del archivo a enviar, relativa al directorio de trabajo actual si se da una ruta relativa. Alternativamente, un objeto tipo archivo abierto en modo binario. Asegúrese de que el puntero del archivo se busque al principio de los datos.

  • mimetype (Optional[str]) – El tipo MIME a enviar para el archivo. Si no se proporciona, intentará detectarlo a partir del nombre del archivo.

  • as_attachment (bool) – Indicar a un navegador que debe ofrecer guardar el archivo en lugar de mostrarlo.

  • download_name (Optional[str]) – El nombre por defecto que utilizarán los navegadores al guardar el archivo. El nombre por defecto es el nombre del archivo pasado.

  • conditional (bool) – Habilitar respuestas condicionales y de rango basadas en las cabeceras de las peticiones. Requiere pasar una ruta de archivo y environ.

  • etag (Union[bool, str]) – Calcula un ETag para el archivo, que requiere pasar una ruta de archivo. También puede ser una cadena para usar en su lugar.

  • last_modified (Optional[Union[datetime.datetime, int, float]]) – La última hora de modificación para enviar el archivo, en segundos. Si no se proporciona, intentará detectarla a partir de la ruta del archivo.

  • max_age (Optional[Union[int, Callable[[Optional[str]], Optional[int]]]]) – El tiempo que el cliente debe almacenar en caché el archivo, en segundos. Si se establece, Cache-Control será public, de lo contrario será no-cache para preferir el almacenamiento en caché condicional.

Tipo del valor devuelto

Response

Changelog

Distinto en la versión 2.0: download_name sustituye al parámetro attachment_filename. Si as_attachment=False, se pasa con Content-Disposition: inline en su lugar.

Distinto en la versión 2.0: max_age sustituye al parámetro cache_timeout. El parámetro conditional está activado y max_age no está establecido por defecto.

Distinto en la versión 2.0: etag sustituye al parámetro add_etags. Puede ser una cadena para usar en lugar de generar una.

Distinto en la versión 2.0: Al pasar un objeto tipo archivo que herede de TextIOBase se producirá un ValueError en lugar de enviar un archivo vacío.

Nuevo en la versión 2.0: Se ha trasladado la implementación a Werkzeug. Ahora es una envoltura para pasar algunos argumentos específicos de Flask.

Distinto en la versión 1.1: filename puede ser un objeto PathLike.

Distinto en la versión 1.1: Pasar un objeto BytesIO soporta solicitudes de rango.

Distinto en la versión 1.0.3: Los nombres de los archivos se codifican con ASCII en lugar de Latin-1 para una mayor compatibilidad con los servidores WSGI.

Distinto en la versión 1.0: Se admiten los nombres de archivo UTF-8 especificados en RFC 2231.

Distinto en la versión 0.12: El nombre del archivo ya no se infiere automáticamente de los objetos de archivo. Si quieres utilizar el soporte automático de MIME y etags, pasa un nombre de archivo a través de filename_or_fp o attachment_filename.

Distinto en la versión 0.12: Se prefiere attachment_filename a filename para la detección de MIME.

Distinto en la versión 0.9: cache_timeout por defecto es Flask.get_send_file_max_age().

Distinto en la versión 0.7: El soporte de conjeturas MIME y etags para objetos tipo archivo fue obviado porque no era confiable. Pase un nombre de archivo si puede hacerlo, de lo contrario adjunte una etiqueta electrónica usted mismo.

Distinto en la versión 0.5: Se han añadido los parámetros add_etags, cache_timeout y conditional. El comportamiento por defecto es añadir etags.

Nuevo en la versión 0.2.

flask.send_from_directory(directory, path, **kwargs)

Enviar un archivo desde un directorio utilizando send_file().

@app.route("/uploads/<path:name>")
def download_file(name):
    return send_from_directory(
        app.config['UPLOAD_FOLDER'], name, as_attachment=True
    )

Esta es una forma segura de servir archivos desde una carpeta, como archivos estáticos o cargas. Utiliza safe_join() para asegurar que la ruta que viene del cliente no está maliciosamente diseñada para apuntar fuera del directorio especificado.

Si la ruta final no apunta a un archivo regular existente, genera un error 404 NotFound.

Parámetros
  • directory (Union[os.PathLike, str]) – El directorio en el que path debe estar ubicado, relativo a la ruta raíz de la aplicación actual.

  • path (Union[os.PathLike, str]) – La ruta del archivo a enviar, relativa al directory.

  • kwargs (Any) – Argumentos para pasar a send_file().

Tipo del valor devuelto

Response

Changelog

Distinto en la versión 2.0: path sustituye al parámetro filename.

Nuevo en la versión 2.0: Se ha trasladado la implementación a Werkzeug. Ahora es una envoltura para pasar algunos argumentos específicos de Flask.

Nuevo en la versión 0.5.

flask.escape()

Reemplaza los caracteres &, <, >, ', y " en la cadena con secuencias seguras para HTML. Utilícelo si necesita mostrar un texto que pueda contener dichos caracteres en HTML.

Si el objeto tiene un método __html__, se llama y se asume que el valor de retorno ya es seguro para HTML.

Parámetros

s – Un objeto que debe convertirse en una cadena y escaparse.

Returns

Una cadena Markup con el texto escapado.

class flask.Markup(base='', encoding=None, errors='strict')

Una cadena que está lista para ser insertada de forma segura en un documento HTML o XML, ya sea porque fue escapada o porque fue marcada como segura.

Pasar un objeto al constructor lo convierte en texto y lo envuelve para marcarlo como seguro sin escapar. Para escapar el texto, utilice el método de clase escape() en su lugar.

>>> Markup("Hello, <em>World</em>!")
Markup('Hello, <em>World</em>!')
>>> Markup(42)
Markup('42')
>>> Markup.escape("Hello, <em>World</em>!")
Markup('Hello &lt;em&gt;World&lt;/em&gt;!')

Esto implementa la interfaz __html__() que utilizan algunos frameworks. Al pasar un objeto que implemente __html__() se envolverá la salida de ese método, marcándolo como seguro.

>>> class Foo:
...     def __html__(self):
...         return '<a href="/foo">foo</a>'
...
>>> Markup(Foo())
Markup('<a href="/foo">foo</a>')

Es una subclase de str. Tiene los mismos métodos, pero escapa sus argumentos y devuelve una instancia de Markup.

>>> Markup("<em>%s</em>") % ("foo & bar",)
Markup('<em>foo &amp; bar</em>')
>>> Markup("<em>Hello</em> ") + "<foo>"
Markup('<em>Hello</em> &lt;foo&gt;')
Parámetros
Tipo del valor devuelto

Markup

classmethod escape(s)

Escapar una cadena. Llama a escape() y asegura que para las subclases se devuelva el tipo correcto.

Parámetros

s (Any) –

Tipo del valor devuelto

markupsafe.Markup

striptags()

unescape() el marcado, elimina las etiquetas y normaliza los espacios en blanco a espacios simples.

>>> Markup("Main &raquo;        <em>About</em>").striptags()
'Main » About'
Tipo del valor devuelto

str

unescape()

Convierte las marcas escapadas en una cadena de texto. Esto reemplaza las entidades HTML con los caracteres que representan.

>>> Markup("Main &raquo; <em>About</em>").unescape()
'Main » <em>About</em>'
Tipo del valor devuelto

str

Mensaje intermitente

flask.flash(message, category='message')

Destella un mensaje a la siguiente petición. Para eliminar el mensaje flasheado de la sesión y mostrarlo al usuario, la plantilla debe llamar a get_flashed_messages().

Changelog

Distinto en la versión 0.3: Se ha añadido el parámetro «category».

Parámetros
  • message (str) – el mensaje que se va a emitir.

  • category (str) – la categoría del mensaje. Se recomiendan los siguientes valores: 'message' para cualquier tipo de mensaje, 'error' para los errores, 'info' para los mensajes de información y 'warning' para las advertencias. Sin embargo, se puede utilizar cualquier tipo de cadena como categoría.

Tipo del valor devuelto

None

flask.get_flashed_messages(with_categories=False, category_filter=())

Extrae todos los mensajes de la sesión y los devuelve. Las llamadas posteriores en la misma petición a la función devolverán los mismos mensajes. Por defecto sólo se devuelven los mensajes, pero cuando with_categories se establece como True, el valor de retorno será una lista de tuplas de la forma (category, message).

Filtra los mensajes parpadeantes a una o más categorías proporcionando esas categorías en category_filter. Esto permite mostrar las categorías en bloques html separados. Los argumentos with_categories y category_filter son distintos:

  • with_categories controla si las categorías se devuelven con el texto del mensaje (True da una tupla, mientras que False da sólo el texto del mensaje).

  • El filtro de categorías filtra los mensajes para que sólo coincidan con las categorías indicadas.

Consulte Mensaje Flash para ver ejemplos.

Changelog

Distinto en la versión 0.9: Se ha añadido el parámetro category_filter.

Distinto en la versión 0.3: Se ha añadido el parámetro with_categories.

Parámetros
  • with_categories (bool) – se establece en True para recibir también las categorías.

  • category_filter (Iterable[str]) – filtro de categorías para limitar los valores devueltos. Sólo se devolverán las categorías de la lista.

Tipo del valor devuelto

Union[List[str], List[Tuple[str, str]]]

Soporte JSON

Flask utiliza el módulo incorporado json para manejar JSON. Utilizará el codificador y decodificador JSON del plano o aplicación actual para facilitar la personalización. Por defecto maneja algunos tipos de datos extra:

El filtro |tojson de Jinja está configurado para utilizar la función dumps() de Flask. El filtro marca la salida con |safe automáticamente. Utiliza el filtro para renderizar datos dentro de las etiquetas <script>.

<script>
    const names = {{ names|tosjon }};
    renderChart(names, {{ axis_data|tojson }});
</script>
flask.json.jsonify(*args, **kwargs)

Serializa los datos a JSON y los envuelve en un Response con el mimetype:application/json.

Utiliza dumps() para serializar los datos, pero los args y los kwargs son tratados como datos en lugar de argumentos para json.dumps().

  1. Argumento único: Se trata como un solo valor.

  2. Argumentos múltiples: Tratados como una lista de valores. jsonify(1, 2, 3) es lo mismo que jsonify([1, 2, 3]).

  3. Argumentos de palabras clave: Tratados como un dict de valores. jsonify(data=data, errors=errors) es lo mismo que jsonify({"data": data, "errors": errors}).

  4. No se permite pasar tanto los argumentos como las palabras clave, ya que no está claro qué debe ocurrir.

from flask import jsonify

@app.route("/users/me")
def get_current_user():
    return jsonify(
        username=g.user.username,
        email=g.user.email,
        id=g.user.id,
    )

Devolverá una respuesta JSON como esta:

{
  "username": "admin",
  "email": "admin@localhost",
  "id": 42
}

La salida por defecto omite las sangrías y los espacios después de los separadores. En modo de depuración o si JSONIFY_PRETTYPRINT_REGULAR es True, la salida tendrá un formato más fácil de leer.

Changelog

Distinto en la versión 2.0.2: decimal.Decimal es compatible con la conversión a una cadena.

Distinto en la versión 0.11: Se ha añadido soporte para serializar arrays de nivel superior. Esto introduce un riesgo de seguridad en los navegadores antiguos. Ver Seguridad JSON.

Nuevo en la versión 0.2.

Parámetros
  • args (Any) –

  • kwargs (Any) –

Tipo del valor devuelto

Response

flask.json.dumps(obj, app=None, **kwargs)

Serializa un objeto a una cadena de JSON.

Toma los mismos argumentos que el built-in json.dumps(), con algunos valores por defecto de la configuración de la aplicación.

Parámetros
  • obj (Any) – Objeto para serializar a JSON.

  • app (Optional[Flask]) – Utiliza la configuración de esta aplicación en lugar del contexto de la aplicación activa o los valores predeterminados.

  • kwargs (Any) – Argumentos extra pasados a json.dumps().

Tipo del valor devuelto

str

Changelog

Distinto en la versión 2.0.2: decimal.Decimal es compatible con la conversión a una cadena.

Distinto en la versión 2.0: encoding está obsoleto y será eliminado en Flask 2.1.

Distinto en la versión 1.0.3: app se puede pasar directamente, en lugar de requerir un contexto de aplicación para la configuración.

flask.json.dump(obj, fp, app=None, **kwargs)

Serializar un objeto a JSON escrito en un objeto de archivo.

Toma los mismos argumentos que el built-in json.dump(), con algunos valores por defecto de la configuración de la aplicación.

Parámetros
  • obj (Any) – Objeto para serializar a JSON.

  • fp (IO[str]) – Objeto de archivo para escribir JSON.

  • app (Optional[Flask]) – Utiliza la configuración de esta aplicación en lugar del contexto de la aplicación activa o los valores predeterminados.

  • kwargs (Any) – Argumentos extra pasados a json.dump().

Tipo del valor devuelto

None

Changelog

Distinto en la versión 2.0: La escritura en un archivo binario, y el argumento encoding, están obsoletos y se eliminarán en Flask 2.1.

flask.json.loads(s, app=None, **kwargs)

Deserializar un objeto a partir de una cadena de JSON.

Toma los mismos argumentos que el built-in json.loads(), con algunos valores por defecto de la configuración de la aplicación.

Parámetros
  • s (Union[str, bytes]) – Cadena JSON a deserializar.

  • app (Optional[Flask]) – Utiliza la configuración de esta aplicación en lugar del contexto de la aplicación activa o los valores predeterminados.

  • kwargs (Any) – Argumentos extra pasados a json.loads().

Tipo del valor devuelto

Any

Changelog

Distinto en la versión 2.0: encoding está obsoleto y se eliminará en Flask 2.1. Los datos deben ser una cadena o bytes UTF-8.

Distinto en la versión 1.0.3: app se puede pasar directamente, en lugar de requerir un contexto de aplicación para la configuración.

flask.json.load(fp, app=None, **kwargs)

Deserializar un objeto a partir de JSON leído desde un objeto de archivo.

Toma los mismos argumentos que el built-in json.load(), con algunos valores por defecto de la configuración de la aplicación.

Parámetros
  • fp (IO[str]) – Objeto de archivo para leer JSON.

  • app (Optional[Flask]) – Utiliza la configuración de esta aplicación en lugar del contexto de la aplicación activa o los valores predeterminados.

  • kwargs (Any) – Argumentos extra pasados a json.load().

Tipo del valor devuelto

Any

Changelog

Distinto en la versión 2.0: encoding está obsoleto y será eliminado en Flask 2.1. El archivo debe estar en modo texto, o en modo binario con bytes UTF-8.

class flask.json.JSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)

El codificador JSON por defecto. Maneja tipos adicionales en comparación con el incorporado json.JSONEncoder.

Asigna una subclase de esto a flask.Flask.json_encoder o flask.Blueprint.json_encoder para anular el valor por defecto.

default(o)

Convierte o en un tipo JSON serializable. Ver json.JSONEncoder.default(). Python no soporta anular cómo se serializan los tipos básicos como str o list, se manejan antes de este método.

Parámetros

o (Any) –

Tipo del valor devuelto

Any

class flask.json.JSONDecoder(*, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None)

El decodificador JSON por defecto.

Esto no cambia el comportamiento del json.JSONDecoder incorporado.

Asigna una subclase de esto a flask.Flask.json_decoder o flask.Blueprint.json_decoder para anular el valor por defecto.

Etiquetado JSON

Una representación compacta para la serialización sin pérdidas de tipos JSON no estándar. SecureCookieSessionInterface utiliza esto para serializar los datos de sesión, pero puede ser útil en otros lugares. Puede ser extendido para soportar otros tipos.

class flask.json.tag.TaggedJSONSerializer

Serializador que utiliza un sistema de etiquetas para representar de forma compacta objetos no JSON. Se pasa como un serializador intermedio a itsdangerous.Serializer.

Se admiten los siguientes tipos adicionales:

Tipo del valor devuelto

None

default_tags = [<class 'flask.json.tag.TagDict'>, <class 'flask.json.tag.PassDict'>, <class 'flask.json.tag.TagTuple'>, <class 'flask.json.tag.PassList'>, <class 'flask.json.tag.TagBytes'>, <class 'flask.json.tag.TagMarkup'>, <class 'flask.json.tag.TagUUID'>, <class 'flask.json.tag.TagDateTime'>]

Clases de etiquetas a enlazar cuando se crea el serializador. Se pueden añadir otras etiquetas más tarde usando register().

dumps(value)

Etiqueta el valor y lo vuelca en una cadena JSON compacta.

Parámetros

value (Any) –

Tipo del valor devuelto

str

loads(value)

Cargar datos de una cadena JSON y deserializar cualquier objeto etiquetado.

Parámetros

value (str) –

Tipo del valor devuelto

Any

register(tag_class, force=False, index=None)

Registra una nueva etiqueta con este serializador.

Parámetros
  • tag_class (Type[flask.json.tag.JSONTag]) – clase de etiqueta a registrar. Se instanciará con esta instancia del serializador.

  • force (bool) – sobrescribir una etiqueta existente. Si es falso (por defecto), se produce un KeyError.

  • index (Optional[int]) – para insertar la nueva etiqueta en el orden de las etiquetas. Es útil cuando la nueva etiqueta es un caso especial de una etiqueta existente. Si es None (por defecto), la etiqueta se añade al final del orden.

Muestra

KeyError – si la clave de la etiqueta ya está registrada y force no es verdadero.

Tipo del valor devuelto

None

tag(value)

Convierte un valor en una representación etiquetada si es necesario.

Parámetros

value (Any) –

Tipo del valor devuelto

Dict[str, Any]

untag(value)

Convierte una representación etiquetada en el tipo original.

Parámetros

value (Dict[str, Any]) –

Tipo del valor devuelto

Any

class flask.json.tag.JSONTag(serializer)

Clase base para definir etiquetas de tipo para TaggedJSONSerializer.

Parámetros

serializer (TaggedJSONSerializer) –

Tipo del valor devuelto

None

check(value)

Comprueba si el valor dado debe ser etiquetado por esta etiqueta.

Parámetros

value (Any) –

Tipo del valor devuelto

bool

key: Optional[str] = None

La etiqueta con la que se marcará el objeto serializado. Si es None, esta etiqueta sólo se utiliza como un paso intermedio durante el etiquetado.

tag(value)

Convierte el valor a un tipo JSON válido y añade la estructura de etiquetas a su alrededor.

Parámetros

value (Any) –

Tipo del valor devuelto

Any

to_json(value)

Convierte el objeto Python en un objeto de tipo JSON válido. La etiqueta se añadirá más tarde.

Parámetros

value (Any) –

Tipo del valor devuelto

Any

to_python(value)

Convierte la representación JSON al tipo correcto. La etiqueta ya estará eliminada.

Parámetros

value (Any) –

Tipo del valor devuelto

Any

Veamos un ejemplo que añade soporte para OrderedDict. Los dicts no tienen un orden en JSON, así que para manejar esto volcaremos los elementos como una lista de pares [key, value]. Subclase JSONTag y dale la nueva clave ' od' para identificar el tipo. El serializador de sesión procesa primero los dicts, así que inserta la nueva etiqueta al principio de la orden ya que OrderedDict debe ser procesado antes que dict.

from flask.json.tag import JSONTag

class TagOrderedDict(JSONTag):
    __slots__ = ('serializer',)
    key = ' od'

    def check(self, value):
        return isinstance(value, OrderedDict)

    def to_json(self, value):
        return [[k, self.serializer.tag(v)] for k, v in iteritems(value)]

    def to_python(self, value):
        return OrderedDict(value)

app.session_interface.serializer.register(TagOrderedDict, index=0)

Renderizado de plantillas

flask.render_template(template_name_or_list, **context)

Renderiza una plantilla por nombre con el contexto dado.

Parámetros
Tipo del valor devuelto

str

flask.render_template_string(source, **context)

Renderiza una plantilla a partir de la cadena fuente dada con el contexto dado.

Parámetros
  • source (str) – El código fuente de la plantilla a renderizar.

  • context (Any) – Las variables que deben estar disponibles en la plantilla.

Tipo del valor devuelto

str

flask.stream_template(template_name_or_list, **context)

Renderiza una plantilla por nombre con el contexto dado como un flujo. Esto devuelve un iterador de cadenas, que puede ser utilizado como una respuesta de flujo de una vista.

Parámetros
Tipo del valor devuelto

Iterator[str]

Nuevo en la versión 2.2.

flask.stream_template_string(source, **context)

Renderiza una plantilla a partir de la cadena de origen dada con el contexto dado como un flujo. Esto devuelve un iterador de cadenas, que puede ser utilizado como una respuesta de flujo desde una vista.

Parámetros
  • source (str) – El código fuente de la plantilla a renderizar.

  • context (Any) – Las variables que deben estar disponibles en la plantilla.

Tipo del valor devuelto

Iterator[str]

Nuevo en la versión 2.2.

flask.get_template_attribute(template_name, attribute)

Carga una macro (o variable) que una plantilla exporta. Esto puede usarse para invocar una macro desde el código de Python. Si por ejemplo tienes una plantilla llamada _cider.html con el siguiente contenido:

{% macro hello(name) %}Hello {{ name }}!{% endmacro %}

Puedes acceder a esto desde el código Python así:

hello = get_template_attribute('_cider.html', 'hello')
return hello('World')
Changelog

Nuevo en la versión 0.2.

Parámetros
  • template_name (str) – el nombre de la plantilla

  • attribute (str) – el nombre de la variable de la macro a la que hay que acceder

Tipo del valor devuelto

Any

Configuración

class flask.Config(root_path, defaults=None)

Funciona exactamente como un dict, pero proporciona formas de llenarlo desde archivos o diccionarios especiales. Hay dos patrones comunes para rellenar la configuración.

O bien puede llenar la configuración de un archivo de configuración:

app.config.from_pyfile('yourconfig.cfg')

O, alternativamente, puede definir las opciones de configuración en el módulo que llama a from_object() o proporcionar una ruta de importación a un módulo que debe ser cargado. También es posible decirle que utilice el mismo módulo y con ello proporcionar los valores de configuración justo antes de la llamada:

DEBUG = True
SECRET_KEY = 'development key'
app.config.from_object(__name__)

En ambos casos (carga desde cualquier archivo de Python o carga desde módulos), sólo se añaden claves en mayúsculas al config. Esto permite utilizar valores en minúsculas en el archivo config para valores temporales que no se añaden al config o definir las claves config en el mismo archivo que implementa la aplicación.

Probablemente la forma más interesante de cargar configuraciones es desde una variable de entorno que apunte a un archivo:

app.config.from_envvar('YOURAPPLICATION_SETTINGS')

En este caso, antes de lanzar la aplicación tienes que establecer esta variable de entorno en el archivo que quieres utilizar. En Linux y OS X utilice la sentencia export:

export YOURAPPLICATION_SETTINGS='/path/to/config/file'

En Windows utilice set en su lugar.

Parámetros
  • root_path (str) – ruta desde la que se leen los archivos de forma relativa. Cuando el objeto config es creado por la aplicación, este es el root_path de la aplicación.

  • defaults (Optional[dict]) – un diccionario opcional de valores por defecto

Tipo del valor devuelto

None

from_envvar(variable_name, silent=False)

Carga una configuración desde una variable de entorno que apunta a un archivo de configuración. Esto es básicamente un atajo con mensajes de error más agradables para esta línea de código:

app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS'])
Parámetros
  • variable_name (str) – nombre de la variable de entorno

  • silent (bool) – se establece en True si se desea un fallo silencioso para los archivos que faltan.

Returns

True si el archivo se ha cargado con éxito.

Tipo del valor devuelto

bool

from_file(filename, load, silent=False)

Actualiza los valores de la configuración a partir de un archivo que se carga con el parámetro load. Los datos cargados se pasan al método from_mapping().

import json
app.config.from_file("config.json", load=json.load)

import toml
app.config.from_file("config.toml", load=toml.load)
Parámetros
  • filename (str) – La ruta del archivo de datos. Puede ser una ruta absoluta o relativa a la ruta raíz de la configuración.

  • load (Callable[[Reader], Mapping] where Reader implements a read method.) – Un llamado que toma un manejador de archivo y devuelve un mapeo de los datos cargados desde el archivo.

  • silent (bool) – Ignora el archivo si no existe.

Returns

True si el archivo se ha cargado con éxito.

Tipo del valor devuelto

bool

Changelog

Nuevo en la versión 2.0.

from_mapping(mapping=None, **kwargs)

Actualiza la configuración como update() ignorando los elementos con claves no superiores. :return: Siempre devuelve True.

Changelog

Nuevo en la versión 0.11.

Parámetros
Tipo del valor devuelto

bool

from_object(obj)

Actualiza los valores del objeto dado. Un objeto puede ser de uno de los dos tipos siguientes:

  • una cadena: En este caso se importará el objeto con ese nombre

  • una referencia a un objeto real: Ese objeto se utiliza directamente

Los objetos suelen ser módulos o clases. from_object() carga sólo los atributos en mayúsculas del módulo/clase. Un objeto dict no funcionará con from_object() porque las claves de un dict no son atributos de la clase dict.

Ejemplo de configuración por módulos:

app.config.from_object('yourapplication.default_config')
from yourapplication import default_config
app.config.from_object(default_config)

No se hace nada al objeto antes de cargarlo. Si el objeto es una clase y tiene atributos @property, es necesario instanciarlo antes de pasarlo a este método.

No debe utilizar esta función para cargar la configuración real, sino los valores predeterminados de la configuración. La configuración real debe ser cargada con from_pyfile() e idealmente desde una ubicación que no esté dentro del paquete porque el paquete podría estar instalado en todo el sistema.

Ver Desarrollo / Producción para un ejemplo de configuración basada en clases usando from_object().

Parámetros

obj (Union[object, str]) – un nombre u objeto de importación

Tipo del valor devuelto

None

from_prefixed_env(prefix='FLASK', *, loads=<function loads>)

Carga cualquier variable de entorno que empiece por FLASK_, eliminando el prefijo de la clave env para la clave config. Los valores se pasan a través de una función de carga para intentar convertirlos en tipos más específicos que las cadenas.

Las claves se cargan en orden sorted().

La función de carga por defecto intenta analizar los valores como cualquier tipo JSON válido, incluyendo dicts y listas.

Se pueden establecer elementos específicos en los dicts anidados separando las claves con doble guión bajo (__). Si una clave intermedia no existe, se inicializará con un dict vacío.

Parámetros
  • prefix (str) – Cargar los env vars que comienzan con este prefijo, separados por un guión bajo (_).

  • loads (Callable[[str], Any]) – Pase cada valor de cadena a esta función y utilice el valor devuelto como valor de configuración. Si se produce algún error se ignora y el valor sigue siendo una cadena. El valor por defecto es json.loads().

Tipo del valor devuelto

bool

Changelog

Nuevo en la versión 2.1.

from_pyfile(filename, silent=False)

Actualiza los valores de la configuración desde un archivo de Python. Esta función se comporta como si el archivo fuera importado como módulo con la función from_object().

Parámetros
  • filename (str) – el nombre de archivo de la configuración. Puede ser un nombre de archivo absoluto o un nombre de archivo relativo a la ruta raíz.

  • silent (bool) – se establece en True si se desea un fallo silencioso para los archivos que faltan.

Returns

True si el archivo se ha cargado con éxito.

Tipo del valor devuelto

bool

Changelog

Nuevo en la versión 0.7: parámetro silent.

get_namespace(namespace, lowercase=True, trim_namespace=True)

Devuelve un diccionario que contiene un subconjunto de opciones de configuración que coinciden con el espacio de nombres/prefijo especificado. Ejemplo de uso:

app.config['IMAGE_STORE_TYPE'] = 'fs'
app.config['IMAGE_STORE_PATH'] = '/var/app/images'
app.config['IMAGE_STORE_BASE_URL'] = 'http://img.website.com'
image_store_config = app.config.get_namespace('IMAGE_STORE_')

El diccionario resultante image_store_config tendría el siguiente aspecto:

{
    'type': 'fs',
    'path': '/var/app/images',
    'base_url': 'http://img.website.com'
}

Esto suele ser útil cuando las opciones de configuración se asignan directamente a argumentos de palabras clave en funciones o constructores de clases.

Parámetros
  • namespace (str) – un espacio de nombres de configuración

  • lowercase (bool) – una bandera que indica si las claves del diccionario resultante deben estar en minúsculas

  • trim_namespace (bool) – una bandera que indica si las claves del diccionario resultante no deben incluir el espacio de nombres

Tipo del valor devuelto

Dict[str, Any]

Changelog

Nuevo en la versión 0.11.

Ayudas para streams

flask.stream_with_context(generator_or_function)

Los contextos de petición desaparecen cuando la respuesta se inicia en el servidor. Esto se hace por razones de eficiencia y para que sea menos probable encontrar fugas de memoria con middlewares WSGI mal escritos. La desventaja es que si estás usando respuestas en flujo, el generador no puede acceder a la información de las peticiones.

Sin embargo, esta función puede ayudarte a mantener el contexto durante más tiempo:

from flask import stream_with_context, request, Response

@app.route('/stream')
def streamed_response():
    @stream_with_context
    def generate():
        yield 'Hello '
        yield request.args['name']
        yield '!'
    return Response(generate())

También puede utilizarse en torno a un generador específico:

from flask import stream_with_context, request, Response

@app.route('/stream')
def streamed_response():
    def generate():
        yield 'Hello '
        yield request.args['name']
        yield '!'
    return Response(stream_with_context(generate()))
Changelog

Nuevo en la versión 0.9.

Parámetros

generator_or_function (Union[Iterator, Callable[[...], Iterator]]) –

Tipo del valor devuelto

Iterator

Internos útiles

class flask.ctx.RequestContext(app, environ, request=None, session=None)

El contexto de solicitud contiene información por solicitud. La aplicación Flask lo crea y empuja al principio de la petición, y luego lo saca al final de la misma. Creará el adaptador de URL y el objeto de solicitud para el entorno WSGI proporcionado.

No intente utilizar esta clase directamente, en su lugar utilice test_request_context() y request_context() para crear este objeto.

Cuando el contexto de la petición se abre, evaluará todas las funciones registradas en la aplicación para la ejecución de teardown (teardown_request()).

El contexto de la petición es automáticamente extraído al final de la petición. Cuando se utiliza el depurador interactivo, el contexto será restaurado para que request siga siendo accesible. Del mismo modo, el cliente de prueba puede preservar el contexto después de que la solicitud termine. Sin embargo, las funciones de desmontaje pueden haber cerrado ya algunos recursos, como las conexiones a la base de datos.

Parámetros
Tipo del valor devuelto

None

copy()

Crea una copia de este contexto de solicitud con el mismo objeto de solicitud. Esto puede ser usado para mover un contexto de petición a un greenlet diferente. Debido a que el objeto de solicitud real es el mismo, esto no se puede utilizar para mover un contexto de solicitud a un hilo diferente a menos que el acceso al objeto de solicitud esté bloqueado.

Changelog

Distinto en la versión 1.1: Se utiliza el objeto de sesión actual en lugar de recargar los datos originales. Esto evita que flask.session apunte a un objeto desactualizado.

Nuevo en la versión 0.10.

Tipo del valor devuelto

flask.ctx.RequestContext

match_request()

Puede ser sobrescrito por una subclase para engancharse a la coincidencia de la solicitud.

Tipo del valor devuelto

None

pop(exc=<object object>)

Despliega el contexto de la solicitud y lo desvincula al hacerlo. Esto también desencadenará la ejecución de las funciones registradas por el decorador teardown_request().

Changelog

Distinto en la versión 0.9: Se ha añadido el argumento exc.

Parámetros

exc (Optional[BaseException]) –

Tipo del valor devuelto

None

flask.globals.request_ctx

La RequestContext actual. Si un contexto de solicitud no está activo, el acceso a los atributos de este proxy generará un RuntimeError.

Este es un objeto interno que es esencial para la forma en que Flask maneja las solicitudes. En la mayoría de los casos no debería ser necesario acceder a él. Lo más probable es que quieras request y session en su lugar.

class flask.ctx.AppContext(app)

El contexto de la aplicación contiene información específica de la aplicación. Se crea un contexto de aplicación y se envía al principio de cada solicitud si no hay uno activo. También se envía un contexto de aplicación cuando se ejecutan comandos CLI.

Parámetros

app (Flask) –

Tipo del valor devuelto

None

pop(exc=<object object>)

Muestra el contexto de la aplicación.

Parámetros

exc (Optional[BaseException]) –

Tipo del valor devuelto

None

push()

Vincula el contexto de la aplicación al contexto actual.

Tipo del valor devuelto

None

flask.globals.app_ctx

La actual AppContext. Si un contexto de aplicación no está activo, el acceso a los atributos de este proxy generará un RuntimeError.

Este es un objeto interno que es esencial para la forma en que Flask maneja las solicitudes. En la mayoría de los casos no debería ser necesario acceder a él. Lo más probable es que quieras current_app y g en su lugar.

class flask.blueprints.BlueprintSetupState(blueprint, app, options, first_registration)

Objeto portador temporal para registrar un blueprint con la aplicación. Una instancia de esta clase es creada por el método make_setup_state() y posteriormente pasada a todas las funciones de callback de registro.

Parámetros
Tipo del valor devuelto

None

add_url_rule(rule, endpoint=None, view_func=None, **options)

Un método de ayuda para registrar una regla (y opcionalmente una función de vista) en la aplicación. El punto final se prefija automáticamente con el nombre del blueprint.

Parámetros
Tipo del valor devuelto

None

app

una referencia a la aplicación actual

blueprint

una referencia al plano que creó este estado de configuración.

first_registration

como los blueprints pueden ser registrados varias veces en la aplicación y no todo quiere ser registrado varias veces en ella, este atributo puede ser utilizado para averiguar si el blueprint ya fue registrado en el pasado.

options

un diccionario con todas las opciones que se pasaron al método register_blueprint().

subdomain

El subdominio para el que debe estar activo el blueprint, None en caso contrario.

url_defaults

Un diccionario con los valores predeterminados de la URL que se añade a todas y cada una de las URL que se definieron con el plano.

url_prefix

El prefijo que debe usarse para todas las URLs definidas en el blueprint.

Señales

Changelog

Nuevo en la versión 0.6.

signals.signals_available

True si el sistema de señalización está disponible. Este es el caso cuando blinker está instalado.

En Flask existen las siguientes señales:

flask.template_rendered

Esta señal se envía cuando una plantilla se ha renderizado con éxito. La señal se invoca con la instancia de la plantilla como template y el contexto como diccionario (llamado context).

Ejemplo de suscriptor:

def log_template_renders(sender, template, context, **extra):
    sender.logger.debug('Rendering template "%s" with context %s',
                        template.name or 'string template',
                        context)

from flask import template_rendered
template_rendered.connect(log_template_renders, app)
flask.before_render_template

Esta señal se envía antes del proceso de renderización de la plantilla. La señal se invoca con la instancia de la plantilla como template y el contexto como diccionario (llamado context).

Ejemplo de suscriptor:

def log_template_renders(sender, template, context, **extra):
    sender.logger.debug('Rendering template "%s" with context %s',
                        template.name or 'string template',
                        context)

from flask import before_render_template
before_render_template.connect(log_template_renders, app)
flask.request_started

Esta señal es enviada cuando el contexto de la petición está configurado, antes de que ocurra cualquier procesamiento de la petición. Dado que el contexto de la solicitud ya está vinculado, el suscriptor puede acceder a la solicitud con los proxies globales estándar como request.

Ejemplo de suscriptor:

def log_request(sender, **extra):
    sender.logger.debug('Request context is set up')

from flask import request_started
request_started.connect(log_request, app)
flask.request_finished

Esta señal se envía justo antes de que se envíe la respuesta al cliente. Se le pasa la respuesta a enviar llamada response.

Ejemplo de suscriptor:

def log_response(sender, response, **extra):
    sender.logger.debug('Request context is about to close down.  '
                        'Response: %s', response)

from flask import request_finished
request_finished.connect(log_response, app)
flask.got_request_exception

Esta señal se envía cuando se produce una excepción no controlada durante el procesamiento de la solicitud, incluso durante la depuración. La excepción se pasa al suscriptor como excepción.

Esta señal no se envía para HTTPException, u otras excepciones que tengan manejadores de error registrados, a menos que la excepción haya sido lanzada desde un manejador de errores.

Este ejemplo muestra cómo hacer un registro extra si una teórica SecurityException fue levantada:

from flask import got_request_exception

def log_security_exception(sender, exception, **extra):
    if not isinstance(exception, SecurityException):
        return

    security_logger.exception(
        f"SecurityException at {request.url!r}",
        exc_info=exception,
    )

got_request_exception.connect(log_security_exception, app)
flask.request_tearing_down

Esta señal se envía cuando la solicitud se está derribando. Se llama siempre, incluso si se produce una excepción. Actualmente las funciones que escuchan esta señal son llamadas después de los manejadores regulares de teardown, pero esto no es algo en lo que se pueda confiar.

Ejemplo de suscriptor:

def close_db_connection(sender, **extra):
    session.close()

from flask import request_tearing_down
request_tearing_down.connect(close_db_connection, app)

A partir de Flask 0.9, también se le pasará un argumento de la palabra clave exc que tiene una referencia a la excepción que causó el teardown si es que hubo una.

flask.appcontext_tearing_down

Esta señal se envía cuando el contexto de la aplicación se está cerrando. Se llama siempre, incluso si se produce una excepción. Actualmente las funciones que escuchan esta señal son llamadas después de los manejadores regulares de teardown, pero esto no es algo en lo que puedas confiar.

Ejemplo de suscriptor:

def close_db_connection(sender, **extra):
    session.close()

from flask import appcontext_tearing_down
appcontext_tearing_down.connect(close_db_connection, app)

También se le pasará un argumento de la palabra clave exc que tiene una referencia a la excepción que causó el derribo si es que la hubo.

flask.appcontext_pushed

Esta señal se envía cuando se empuja un contexto de aplicación. El remitente es la aplicación. Suele ser útil en los unittests para enganchar temporalmente la información. Por ejemplo, se puede utilizar para establecer un recurso temprano en el objeto g.

Ejemplo de uso:

from contextlib import contextmanager
from flask import appcontext_pushed

@contextmanager
def user_set(app, user):
    def handler(sender, **kwargs):
        g.user = user
    with appcontext_pushed.connected_to(handler, app):
        yield

Y en el testcode:

def test_user_me(self):
    with user_set(app, 'john'):
        c = app.test_client()
        resp = c.get('/users/me')
        assert resp.data == 'username=john'
Changelog

Nuevo en la versión 0.10.

flask.appcontext_popped

Esta señal se envía cuando un contexto de aplicación se abre. El remitente es la aplicación. Suele coincidir con la señal appcontext_tearing_down.

Changelog

Nuevo en la versión 0.10.

flask.message_flashed

Esta señal se envía cuando la aplicación está emitiendo un mensaje. El mensaje se envía como argumento de la palabra clave message y la categoría como category.

Ejemplo de suscriptor:

recorded = []
def record(sender, message, category, **extra):
    recorded.append((message, category))

from flask import message_flashed
message_flashed.connect(record, app)
Changelog

Nuevo en la versión 0.10.

class signals.Namespace

Un alias para blinker.base.Namespace si blinker está disponible, de lo contrario una clase ficticia que crea señales falsas. Esta clase está disponible para las extensiones de Flask que quieran proporcionar el mismo sistema de fallback que el propio Flask.

signal(name, doc=None)

Crea una nueva señal para este espacio de nombres si blinker está disponible, de lo contrario devuelve una señal falsa que tiene un método de envío que no hará nada pero fallará con un RuntimeError para todas las demás operaciones, incluyendo la conexión.

Vistas basadas en clases

Changelog

Nuevo en la versión 0.7.

class flask.views.View

Subclase de esta clase y anular dispatch_request() para crear una vista genérica basada en la clase. Llame a as_view() para crear una función de vista que cree una instancia de la clase con los argumentos dados y llame a su método dispatch_request con cualquier variable de la URL.

Consulte Vistas basadas en las clases para obtener una guía detallada.

class Hello(View):
    init_every_request = False

    def dispatch_request(self, name):
        return f"Hello, {name}!"

app.add_url_rule(
    "/hello/<name>", view_func=Hello.as_view("hello")
)

Establezca methods en la clase para cambiar los métodos que acepta la vista.

Establezca decorators en la clase para aplicar una lista de decoradores a la función de vista generada ¡Los decoradores aplicados a la propia clase no se aplicarán a la función de vista generada!

Establece init_every_request a False para mayor eficiencia, a menos que necesites almacenar datos globales de la solicitud en self.

classmethod as_view(name, *class_args, **class_kwargs)

Convierte la clase en una función de vista que puede ser registrada para una ruta.

Por defecto, la vista generada creará una nueva instancia de la clase view para cada petición y llamará a su método dispatch_request(). Si la clase de vista establece init_every_request a False, se utilizará la misma instancia para cada solicitud.

Los argumentos pasados a este método son enviados al método __init__ de la clase view.

Distinto en la versión 2.2: Añadido el atributo de clase init_every_request.

Parámetros
  • name (str) –

  • class_args (Any) –

  • class_kwargs (Any) –

Tipo del valor devuelto

Union[Callable[[…], Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]], Callable[[…], Awaitable[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Dict[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]]]]

decorators: ClassVar[List[Callable]] = []