API

This part of the documentation covers all the interfaces of Flask. For parts where Flask depends on external libraries, we document the most important right here and provide links to the canonical documentation.

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 (str | None) – 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 (str | os.PathLike | None) – 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 (str | None) – 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 (str | os.PathLike | None) – 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 (str | None) – 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 (str | None) – 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.

Changelog

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 (str | None) – 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 (str | None) – 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 (str | None) – 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
  • rule (str) – La cadena de reglas URL.

  • endpoint (str | None) – El nombre del endpoint a asociar con la regla y la función de la vista. Se utiliza cuando se enrutan y construyen URLs. Por defecto es view_func.__name__.

  • view_func (ft.RouteCallable | None) – La función de la vista a asociar con el nombre del endpoint.

  • provide_automatic_options (bool | None) – Añade el método OPTIONS y responde a las peticiones OPTIONS automáticamente.

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

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.

This is available on both app and blueprint objects. When used on an app, this executes after every request. When used on a blueprint, this executes after every request that the blueprint handles. To register with a blueprint and execute after every request, use Blueprint.after_app_request().

Parámetros

f (flask.scaffold.T_after_request) –

Tipo del valor devuelto

flask.scaffold.T_after_request

after_request_funcs: dict[ft.AppOrBlueprintKey, 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_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.

This is available on both app and blueprint objects. When used on an app, this executes before every request. When used on a blueprint, this executes before every request that the blueprint handles. To register with a blueprint and execute before every request, use Blueprint.before_app_request().

Parámetros

f (flask.scaffold.T_before_request) –

Tipo del valor devuelto

flask.scaffold.T_before_request

before_request_funcs: dict[ft.AppOrBlueprintKey, 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: 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)

Registers a template context processor function. These functions run before rendering a template. The keys of the returned dict are added as variables available in the template.

This is available on both app and blueprint objects. When used on an app, this is called for every rendered template. When used on a blueprint, this is called for templates rendered from the blueprint’s views. To register with a blueprint and affect every template, use Blueprint.app_context_processor().

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 (flask.wrappers.Request | None) –

Tipo del valor devuelto

werkzeug.routing.map.MapAdapter | None

property debug: bool

Whether debug mode is enabled. When using flask run to start the development server, an interactive debugger will be shown for unhandled exceptions, and the server will be reloaded when code changes. This maps to the DEBUG config key. It may not behave as expected if set late.

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

Default: False

default_config = {'APPLICATION_ROOT': '/', 'DEBUG': None, 'EXPLAIN_TEMPLATE_LOADING': False, '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

ft.ResponseReturnValue

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 (BaseException | None) –

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 (BaseException | None) – 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

error_handler_spec: dict[ft.AppOrBlueprintKey, dict[int | None, dict[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

This is available on both app and blueprint objects. When used on an app, this can handle errors from every request. When used on a blueprint, this can handle errors from requests that the blueprint handles. To register with a blueprint and affect every request, use Blueprint.app_errorhandler().

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 (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 (str | None) –

Tipo del valor devuelto

int | None

property got_first_request: bool

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

Obsoleto desde la versión 2.3: Will be removed in Flask 2.4.

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.

If PROPAGATE_EXCEPTIONS is True, such as in debug mode, the error will be re-raised so that the debugger can display it. Otherwise, the original exception is logged, and an InternalServerError is returned.

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 (HTTPException) –

Tipo del valor devuelto

HTTPException | ft.ResponseReturnValue

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

HTTPException | ft.ResponseReturnValue

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

t.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: jinja2.loaders.FileSystemLoader | None

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: JSONProvider

Provides access to JSON methods. Functions in flask.json will call methods on this provider when the application context is active. Used for handling JSON requests and responses.

An instance of json_provider_class. Can be customized by changing that attribute on a subclass, or by assigning to this attribute afterwards.

The default, DefaultJSONProvider, uses Python’s built-in json library. A different provider can use a different JSON library.

Changelog

Nuevo en la versión 2.2.

json_provider_class

alias of flask.json.provider.DefaultJSONProvider

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 (tuple[type, BaseException, traceback] | 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.

Changelog

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 (ft.ResponseReturnValue) – 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

Response

Changelog

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

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

ft.ResponseReturnValue | None

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

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

Changelog

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 (t.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.

The FLASK_DEBUG environment variable will override 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

Distinto en la versión 2.2: Autoescaping is now enabled by default for .svg files.

Nuevo en la versión 0.5.

Parámetros

filename (str) –

Tipo del valor devuelto

bool

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

session_interface: 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: 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 (BaseException | None) –

Tipo del valor devuelto

bool

property static_folder: str | None

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

property static_url_path: str | None

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: 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.

This is available on both app and blueprint objects. When used on an app, this executes after every request. When used on a blueprint, this executes after every request that the blueprint handles. To register with a blueprint and execute after every request, use Blueprint.teardown_app_request().

Parámetros

f (flask.scaffold.T_teardown) –

Tipo del valor devuelto

flask.scaffold.T_teardown

teardown_request_funcs: dict[ft.AppOrBlueprintKey, 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: dict[ft.AppOrBlueprintKey, 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 (str | None) – 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 (str | None) – 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 (str | None) – 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]

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 (t.Any) –

Tipo del valor devuelto

FlaskCliRunner

test_cli_runner_class: type[FlaskCliRunner] | None = 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 (t.Any) –

Tipo del valor devuelto

FlaskClient

test_client_class: type[FlaskClient] | None = 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 app.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: list[t.Callable[[Exception, str, 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: dict[ft.AppOrBlueprintKey, 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.

This is available on both app and blueprint objects. When used on an app, this is called for every request. When used on a blueprint, this is called for requests that the blueprint handles. To register with a blueprint and affect every request, use Blueprint.app_url_defaults().

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

Changelog

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.

This is available on both app and blueprint objects. When used on an app, this is called for every request. When used on a blueprint, this is called for requests that the blueprint handles. To register with a blueprint and affect every request, use Blueprint.app_url_value_preprocessor().

Parámetros

f (flask.scaffold.T_url_value_preprocessor) –

Tipo del valor devuelto

flask.scaffold.T_url_value_preprocessor

url_value_preprocessors: dict[ft.AppOrBlueprintKey, 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: 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 (str | os.PathLike | None) – 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 (str | None) – 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 (str | os.PathLike | None) – 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 (str | None) – Una ruta que se añade a todas las URL del blueprint, para distinguirlas del resto de las rutas de la aplicación.

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

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

  • root_path (str | None) – 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 (str | None) – The name of the blueprint’s CLI group. If not set, the blueprint name will be used.

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)

Register a template filter, available in any template rendered by the application. Works like the app_template_filter() decorator. Equivalent to Flask.add_template_filter().

Parámetros
  • name (str | None) – 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)

Register a template global, available in any template rendered by the application. Works like the app_template_global() decorator. Equivalent to Flask.add_template_global().

Changelog

Nuevo en la versión 0.10.

Parámetros
  • name (str | None) – 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)

Register a template test, available in any template rendered by the application. Works like the app_template_test() decorator. Equivalent to Flask.add_template_test().

Changelog

Nuevo en la versión 0.10.

Parámetros
  • name (str | None) – 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)

Register a URL rule with the blueprint. See Flask.add_url_rule() for full documentation.

The URL rule is prefixed with the blueprint’s URL prefix. The endpoint name, used with url_for(), is prefixed with the blueprint’s name.

Parámetros
  • rule (str) –

  • endpoint (str | None) –

  • view_func (ft.RouteCallable | None) –

  • provide_automatic_options (bool | None) –

  • options (t.Any) –

Tipo del valor devuelto

None

after_app_request(f)

Like after_request(), but after every request, not only those handled by the blueprint. Equivalent to Flask.after_request().

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.

This is available on both app and blueprint objects. When used on an app, this executes after every request. When used on a blueprint, this executes after every request that the blueprint handles. To register with a blueprint and execute after every request, use Blueprint.after_app_request().

Parámetros

f (flask.scaffold.T_after_request) –

Tipo del valor devuelto

flask.scaffold.T_after_request

after_request_funcs: dict[ft.AppOrBlueprintKey, 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)

Like context_processor(), but for templates rendered by every view, not only by the blueprint. Equivalent to Flask.context_processor().

Parámetros

f (flask.blueprints.T_template_context_processor) –

Tipo del valor devuelto

flask.blueprints.T_template_context_processor

app_errorhandler(code)

Like errorhandler(), but for every request, not only those handled by the blueprint. Equivalent to Flask.errorhandler().

Parámetros

code (type[Exception] | int) –

Tipo del valor devuelto

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

app_template_filter(name=None)

Register a template filter, available in any template rendered by the application. Equivalent to Flask.template_filter().

Parámetros

name (str | None) – 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)

Register a template global, available in any template rendered by the application. Equivalent to Flask.template_global().

Changelog

Nuevo en la versión 0.10.

Parámetros

name (str | None) – 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)

Register a template test, available in any template rendered by the application. Equivalent to Flask.template_test().

Changelog

Nuevo en la versión 0.10.

Parámetros

name (str | None) – 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)

Like url_defaults(), but for every request, not only those handled by the blueprint. Equivalent to Flask.url_defaults().

Parámetros

f (flask.blueprints.T_url_defaults) –

Tipo del valor devuelto

flask.blueprints.T_url_defaults

app_url_value_preprocessor(f)

Like url_value_preprocessor(), but for every request, not only those handled by the blueprint. Equivalent to Flask.url_value_preprocessor().

Parámetros

f (flask.blueprints.T_url_value_preprocessor) –

Tipo del valor devuelto

flask.blueprints.T_url_value_preprocessor

before_app_request(f)

Like before_request(), but before every request, not only those handled by the blueprint. Equivalent to Flask.before_request().

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.

This is available on both app and blueprint objects. When used on an app, this executes before every request. When used on a blueprint, this executes before every request that the blueprint handles. To register with a blueprint and execute before every request, use Blueprint.before_app_request().

Parámetros

f (flask.scaffold.T_before_request) –

Tipo del valor devuelto

flask.scaffold.T_before_request

before_request_funcs: dict[ft.AppOrBlueprintKey, 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)

Registers a template context processor function. These functions run before rendering a template. The keys of the returned dict are added as variables available in the template.

This is available on both app and blueprint objects. When used on an app, this is called for every rendered template. When used on a blueprint, this is called for templates rendered from the blueprint’s views. To register with a blueprint and affect every template, use Blueprint.app_context_processor().

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: dict[ft.AppOrBlueprintKey, dict[int | None, dict[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

This is available on both app and blueprint objects. When used on an app, this can handle errors from every request. When used on a blueprint, this can handle errors from requests that the blueprint handles. To register with a blueprint and affect every request, use Blueprint.app_errorhandler().

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 (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 (str | None) –

Tipo del valor devuelto

int | None

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: jinja2.loaders.FileSystemLoader | None

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.

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

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

Distinto en la versión 2.3: Nested blueprints now correctly apply subdomains.

Changelog

Distinto en la versión 2.1: Registering the same blueprint with the same name multiple times is an error.

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.

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: str | None

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

property static_url_path: str | None

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)

Like teardown_request(), but after every request, not only those handled by the blueprint. Equivalent to Flask.teardown_request().

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.

This is available on both app and blueprint objects. When used on an app, this executes after every request. When used on a blueprint, this executes after every request that the blueprint handles. To register with a blueprint and execute after every request, use Blueprint.teardown_app_request().

Parámetros

f (flask.scaffold.T_teardown) –

Tipo del valor devuelto

flask.scaffold.T_teardown

teardown_request_funcs: dict[ft.AppOrBlueprintKey, 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: dict[ft.AppOrBlueprintKey, 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: dict[ft.AppOrBlueprintKey, 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.

This is available on both app and blueprint objects. When used on an app, this is called for every request. When used on a blueprint, this is called for requests that the blueprint handles. To register with a blueprint and affect every request, use Blueprint.app_url_defaults().

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.

This is available on both app and blueprint objects. When used on an app, this is called for every request. When used on a blueprint, this is called for requests that the blueprint handles. To register with a blueprint and affect every request, use Blueprint.app_url_value_preprocessor().

Parámetros

f (flask.scaffold.T_url_value_preprocessor) –

Tipo del valor devuelto

flask.scaffold.T_url_value_preprocessor

url_value_preprocessors: dict[ft.AppOrBlueprintKey, 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: 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.accept.CharsetAccept

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

property accept_encodings: werkzeug.datastructures.accept.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.accept.LanguageAccept

Lista de idiomas que este cliente acepta como objeto LanguageAccept.

property accept_mimetypes: werkzeug.datastructures.accept.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 (t.Callable[[Request], WSGIApplication]) – la llamada WSGI para decorar

Returns

una nueva llamada WSGI

Tipo del valor devuelto

WSGIApplication

property args: werkzeug.datastructures.structures.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.

Distinto en la versión 2.3: Invalid bytes remain percent encoded.

property authorization: werkzeug.datastructures.auth.Authorization | None

The Authorization header parsed into an Authorization object. None if the header is not present.

Distinto en la versión 2.3: Authorization is no longer a dict. The token attribute was added for auth schemes that use a token instead of parameters.

property base_url: str

Como url pero sin la cadena de consulta.

property blueprint: str | None

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.cache_control.RequestCacheControl

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

property charset: str

The charset used to decode body, form, and cookie data. Defaults to UTF-8.

Obsoleto desde la versión 2.3: Will be removed in Werkzeug 3.0. Request data must always be UTF-8.

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: int | None

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.structures.ImmutableMultiDict[str, str]

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

property data: bytes

The raw data read from stream. Will be empty if the request represents form data.

To get the raw data even if it represents form data, use get_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.

dict_storage_class

alias of werkzeug.datastructures.structures.ImmutableMultiDict

property encoding_errors: str

How errors when decoding bytes are handled. Defaults to «replace».

Obsoleto desde la versión 2.3: Will be removed in Werkzeug 3.0.

property endpoint: str | None

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.structures.ImmutableMultiDict[str, werkzeug.datastructures.file_storage.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.structures.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

bytes | str

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

Analiza data como JSON.

If the mimetype does not indicate JSON (application/json, see is_json), or parsing fails, on_json_loading_failed() is called and its return value is used as the return value. By default this raises a 415 Unsupported Media Type resp.

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]

Distinto en la versión 2.3: Raise a 415 error instead of 400.

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.etag.ETags

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

Tipo del valor devuelto

ETags

property if_modified_since: datetime.datetime | None

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.etag.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.range.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: datetime.datetime | None

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

The raw WSGI input stream, without any safety checks.

This is dangerous to use. It does not guard against infinite streams or reading past content_length or max_content_length.

Use stream instead.

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.

If the request content type is not application/json, this will raise a 415 Unsupported Media Type error.

Distinto en la versión 2.3: Raise a 415 error instead of 400.

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.structures.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: int | None

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 (ValueError | None) – 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

Distinto en la versión 2.3: Raise a 415 error instead of 400.

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.structures.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.structures.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: werkzeug.datastructures.range.Range | None

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: Exception | None = 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]

The WSGI input stream, with safety checks. This stream can only be consumed once.

Use get_data() to get the full data as bytes or text. The data attribute will contain the full bytes only if they do not represent form data. The form attribute will contain the parsed form data in that case.

Unlike input_stream, this stream guards against infinite streams or reading past content_length or max_content_length.

If max_content_length is set, it can be enforced on streams if wsgi.input_terminated is set. Otherwise, an empty stream is returned.

If the limit is reached before the underlying stream is exhausted (such as a file that is too large, or an infinite stream), the remaining contents of the stream cannot be read safely. Depending on how the server handles this, clients may show a «connection reset» failure instead of seeing the 413 response.

Distinto en la versión 2.3: Check max_content_length preemptively and while reading.

Changelog

Distinto en la versión 0.9: The stream is always set (but may be consumed) even if form parsing was accessed first.

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

The charset to use when decoding percent-encoded bytes in args. Defaults to the value of charset, which defaults to UTF-8.

Obsoleto desde la versión 2.3: Will be removed in Werkzeug 3.0. Percent-encoded bytes must always be UTF-8.

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: Rule | None = 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.1: The built-in parser was removed. Set user_agent_class to a UserAgent subclass to parse data from the string.

user_agent_class

alias of werkzeug.user_agent.UserAgent

property values: werkzeug.datastructures.structures.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: dict[str, t.Any] | None = 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

To access incoming request data, you can use the global request object. Flask parses incoming request data for you and gives you access to it through that global object. Internally Flask makes sure that you always get the correct data for the active thread if you are in a multithreaded environment.

Se trata de un proxy. 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.structures.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.cache_control.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

int | None

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]

property charset: str

The charset used to encode body and cookie data. Defaults to UTF-8.

Obsoleto desde la versión 2.3: Will be removed in Werkzeug 3.0. Response data must always be UTF-8.

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.structures.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.range.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.csp.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.csp.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: 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 | None) – 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 (WSGIEnvironment | None) – 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: An ETag header is always added.

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

t.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

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

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

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[t.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 (WSGIEnvironment | Request) – un objeto de solicitud o entorno WSGI que se utilizará para condicionar la respuesta.

  • accept_ranges (bool | str) – This parameter dictates the value of Accept-Ranges header. If False (default), the header is not set. If True, it will be set to "bytes". If it’s a string, it will use this value.

  • complete_length (int | None) – 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: str | None

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.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: datetime.datetime | None

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 (str | None) – 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 (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.structures.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.auth.WWWAuthenticate

The WWW-Authenticate header parsed into a WWWAuthenticate object. Modifying the object will modify the header value.

This header is not set by default. To set this header, assign an instance of WWWAuthenticate to this attribute.

response.www_authenticate = WWWAuthenticate(
    "basic", {"realm": "Authentication Required"}
)

Multiple values for this header can be sent to give the client multiple options. Assign a list to set multiple headers. However, modifying the items in the list will not automatically update the header values, and accessing this attribute will only ever return the first value.

To unset this header, assign None or use del.

Distinto en la versión 2.3: This attribute can be assigned to to set the header. A list can be assigned to set multiple header values. Use del to unset the header.

Distinto en la versión 2.3: WWWAuthenticate is no longer a dict. The token attribute was added for auth challenges that use a token instead of parameters.

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 proxy. 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 if the session object detected a modification. Be advised that modifications on mutable structures are not picked up automatically, in that situation you have to explicitly set the attribute to True yourself. Here an example:

# 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

If set to True the session lives for permanent_session_lifetime seconds. The default is 31 days. If set to False (which is the default) the session will be deleted when the user closes the browser.

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.

The value of the Domain parameter on the session cookie. If not set, browsers will only send the cookie to the exact domain it was set from. Otherwise, they will send it to any subdomain of the given value as well.

Uses the SESSION_COOKIE_DOMAIN config.

Distinto en la versión 2.3: Not set by default, does not fall back to SERVER_NAME.

Parámetros

app (Flask) –

Tipo del valor devuelto

str | None

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

The name of the session cookie. Uses``app.config[«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

datetime | None

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

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

SessionMixin | None

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

SecureCookieSession | None

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 (t.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 (t.Any) –

Tipo del valor devuelto

None

clear() None.  Remove all items from D.
Parámetros
  • args (Any) –

  • kwargs (Any) –

Tipo del valor devuelto

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

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

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

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

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

The PERMANENT_SESSION_LIFETIME config can be an integer or timedelta. The permanent_session_lifetime attribute is always a timedelta.

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 (t.Any) –

  • kwargs (t.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 (t.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 (t.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: 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
  • app (Flask) –

  • kwargs (t.Any) –

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

To share data that is valid for one request only from one function to another, a global variable is not good enough because it would break in threaded environments. Flask provides you with a special object that ensures it is only valid for the active request and that will return different values for each request. In a nutshell: it does the right thing, like it does for request and 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

Changelog

Distinto en la versión 2.2: Llama a current_app.url_for, permitiendo que una aplicación anule el comportamiento.

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 (int | BaseResponse) – El código de estado de la excepción, que debe registrarse en app.aborter.

  • args (t.Any) – Pasó a la excepción.

  • kwargs (t.Any) – Pasó a la excepción.

Tipo del valor devuelto

t.NoReturn

Changelog

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 (type[BaseResponse] | None) – La clase de respuesta a utilizar. No se utiliza cuando está activa current_app, que utiliza app.response_class.

Tipo del valor devuelto

BaseResponse

Changelog

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 (t.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 (os.PathLike | str | t.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 (str | None) – 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 (str | None) – 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 (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 (datetime | int | float | None) – 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 (None | (int | t.Callable[[str | None], int | None])) – 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 (os.PathLike | str) – El directorio en el que path debe estar ubicado, relativo a la ruta raíz de la aplicación actual.

  • path (os.PathLike | str) – La ruta del archivo a enviar, relativa al directory.

  • kwargs (t.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.

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

list[str] | list[tuple[str, str]]

Soporte JSON

Flask uses Python’s built-in json module for handling JSON by default. The JSON implementation can be changed by assigning a different provider to flask.Flask.json_provider_class or flask.Flask.json. The functions provided by flask.json will use methods on app.json if an app context is active.

Jinja’s |tojson filter is configured to use the app’s JSON provider. The filter marks the output with |safe. Use it to render data inside HTML <script> tags.

<script>
    const names = {{ names|tojson }};
    renderChart(names, {{ axis_data|tojson }});
</script>
flask.json.jsonify(*args, **kwargs)

Serialize the given arguments as JSON, and return a Response object with the application/json mimetype. A dict or list returned from a view will be converted to a JSON response automatically without needing to call this.

This requires an active request or application context, and calls app.json.response().

In debug mode, the output is formatted with indentation to make it easier to read. This may also be controlled by the provider.

Either positional or keyword arguments can be given, not both. If no arguments are given, None is serialized.

Parámetros
  • args (t.Any) – A single value to serialize, or multiple values to treat as a list to serialize.

  • kwargs (t.Any) – Treat as a dict to serialize.

Tipo del valor devuelto

Response

Changelog

Distinto en la versión 2.2: Calls current_app.json.response, allowing an app to override the behavior.

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: Added support for serializing top-level arrays. This was a security risk in ancient browsers. See Seguridad JSON.

Nuevo en la versión 0.2.

flask.json.dumps(obj, **kwargs)

Serialize data as JSON.

If current_app is available, it will use its app.json.dumps() method, otherwise it will use json.dumps().

Parámetros
  • obj (Any) – The data to serialize.

  • kwargs (Any) – Arguments passed to the dumps implementation.

Tipo del valor devuelto

str

Distinto en la versión 2.3: The app parameter was removed.

Changelog

Distinto en la versión 2.2: Calls current_app.json.dumps, allowing an app to override the behavior.

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 will be removed in 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, **kwargs)

Serialize data as JSON and write to a file.

If current_app is available, it will use its app.json.dump() method, otherwise it will use json.dump().

Parámetros
  • obj (Any) – The data to serialize.

  • fp (IO[str]) – A file opened for writing text. Should use the UTF-8 encoding to be valid JSON.

  • kwargs (Any) – Arguments passed to the dump implementation.

Tipo del valor devuelto

None

Distinto en la versión 2.3: The app parameter was removed.

Changelog

Distinto en la versión 2.2: Calls current_app.json.dump, allowing an app to override the behavior.

Distinto en la versión 2.0: Writing to a binary file, and the encoding argument, will be removed in Flask 2.1.

flask.json.loads(s, **kwargs)

Deserialize data as JSON.

If current_app is available, it will use its app.json.loads() method, otherwise it will use json.loads().

Parámetros
  • s (str | bytes) – Text or UTF-8 bytes.

  • kwargs (Any) – Arguments passed to the loads implementation.

Tipo del valor devuelto

Any

Distinto en la versión 2.3: The app parameter was removed.

Changelog

Distinto en la versión 2.2: Calls current_app.json.loads, allowing an app to override the behavior.

Distinto en la versión 2.0: encoding will be removed in Flask 2.1. The data must be a string or UTF-8 bytes.

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, **kwargs)

Deserialize data as JSON read from a file.

If current_app is available, it will use its app.json.load() method, otherwise it will use json.load().

Parámetros
  • fp (IO) – A file opened for reading text or UTF-8 bytes.

  • kwargs (Any) – Arguments passed to the load implementation.

Tipo del valor devuelto

Any

Distinto en la versión 2.3: The app parameter was removed.

Changelog

Distinto en la versión 2.2: Calls current_app.json.load, allowing an app to override the behavior.

Distinto en la versión 2.2: The app parameter will be removed in Flask 2.3.

Distinto en la versión 2.0: encoding will be removed in Flask 2.1. The file must be text mode, or binary mode with UTF-8 bytes.

class flask.json.provider.JSONProvider(app)

A standard set of JSON operations for an application. Subclasses of this can be used to customize JSON behavior or use different JSON libraries.

To implement a provider for a specific library, subclass this base class and implement at least dumps() and loads(). All other methods have default implementations.

To use a different provider, either subclass Flask and set json_provider_class to a provider class, or set app.json to an instance of the class.

Parámetros

app (Flask) – An application instance. This will be stored as a weakref.proxy on the _app attribute.

Tipo del valor devuelto

None

Changelog

Nuevo en la versión 2.2.

dumps(obj, **kwargs)

Serialize data as JSON.

Parámetros
  • obj (Any) – The data to serialize.

  • kwargs (Any) – May be passed to the underlying JSON library.

Tipo del valor devuelto

str

dump(obj, fp, **kwargs)

Serialize data as JSON and write to a file.

Parámetros
  • obj (Any) – The data to serialize.

  • fp (IO[str]) – A file opened for writing text. Should use the UTF-8 encoding to be valid JSON.

  • kwargs (Any) – May be passed to the underlying JSON library.

Tipo del valor devuelto

None

loads(s, **kwargs)

Deserialize data as JSON.

Parámetros
  • s (str | bytes) – Text or UTF-8 bytes.

  • kwargs (Any) – May be passed to the underlying JSON library.

Tipo del valor devuelto

Any

load(fp, **kwargs)

Deserialize data as JSON read from a file.

Parámetros
  • fp (IO) – A file opened for reading text or UTF-8 bytes.

  • kwargs (Any) – May be passed to the underlying JSON library.

Tipo del valor devuelto

Any

response(*args, **kwargs)

Serialize the given arguments as JSON, and return a Response object with the application/json mimetype.

The jsonify() function calls this method for the current application.

Either positional or keyword arguments can be given, not both. If no arguments are given, None is serialized.

Parámetros
  • args (t.Any) – A single value to serialize, or multiple values to treat as a list to serialize.

  • kwargs (t.Any) – Treat as a dict to serialize.

Tipo del valor devuelto

Response

class flask.json.provider.DefaultJSONProvider(app)

Provide JSON operations using Python’s built-in json library. Serializes the following additional data types:

Parámetros

app (Flask) –

Tipo del valor devuelto

None

static default(o)

Apply this function to any object that json.dumps() does not know how to serialize. It should return a valid JSON type or raise a TypeError.

Parámetros

o (Any) –

Tipo del valor devuelto

Any

ensure_ascii = True

Replace non-ASCII characters with escape sequences. This may be more compatible with some clients, but can be disabled for better performance and size.

sort_keys = True

Sort the keys in any serialized dicts. This may be useful for some caching situations, but can be disabled for better performance. When enabled, keys must all be strings, they are not converted before sorting.

compact: bool | None = None

If True, or None out of debug mode, the response() output will not add indentation, newlines, or spaces. If False, or None in debug mode, it will use a non-compact representation.

mimetype = 'application/json'

The mimetype set in response().

dumps(obj, **kwargs)

Serialize data as JSON to a string.

Keyword arguments are passed to json.dumps(). Sets some parameter defaults from the default, ensure_ascii, and sort_keys attributes.

Parámetros
Tipo del valor devuelto

str

loads(s, **kwargs)

Deserialize data as JSON from a string or bytes.

Parámetros
Tipo del valor devuelto

Any

response(*args, **kwargs)

Serialize the given arguments as JSON, and return a Response object with it. The response mimetype will be «application/json» and can be changed with mimetype.

If compact is False or debug mode is enabled, the output will be formatted to be easier to read.

Either positional or keyword arguments can be given, not both. If no arguments are given, None is serialized.

Parámetros
  • args (t.Any) – A single value to serialize, or multiple values to treat as a list to serialize.

  • kwargs (t.Any) – Treat as a dict to serialize.

Tipo del valor devuelto

Response

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: str | None = 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]

Changelog

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]

Changelog

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 (dict | None) – 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, text=True)

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 tomllib
app.config.from_file("config.toml", load=tomllib.load, text=False)
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.

  • text (bool) – Open the file in text or binary mode.

Returns

True si el archivo se ha cargado con éxito.

Tipo del valor devuelto

bool

Distinto en la versión 2.3: The text parameter was added.

Changelog

Nuevo en la versión 2.0.

from_mapping(mapping=None, **kwargs)

Updates the config like update() ignoring items with non-upper keys.

Returns

Always returns True.

Parámetros
Tipo del valor devuelto

bool

Changelog

Nuevo en la versión 0.11.

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 (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 (BaseException | None) –

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 (BaseException | None) –

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
  • blueprint (Blueprint) –

  • app (Flask) –

  • options (t.Any) –

  • first_registration (bool) –

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

Signals are provided by the Blinker library. See Señales for an introduction.

flask.template_rendered

This signal is sent when a template was successfully rendered. The signal is invoked with the instance of the template as template and the context as dictionary (named 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

This signal is sent when the request context is set up, before any request processing happens. Because the request context is already bound, the subscriber can access the request with the standard global proxies such as 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

This signal is sent when the request is tearing down. This is always called, even if an exception is caused. Currently functions listening to this signal are called after the regular teardown handlers, but this is not something you can rely on.

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

This signal is sent when the app context is tearing down. This is always called, even if an exception is caused. Currently functions listening to this signal are called after the regular teardown handlers, but this is not something you can rely on.

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

This signal is sent when an application context is pushed. The sender is the application. This is usually useful for unittests in order to temporarily hook in information. For instance it can be used to set a resource early onto the g object.

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

This signal is sent when an application context is popped. The sender is the application. This usually falls in line with the appcontext_tearing_down signal.

Changelog

Nuevo en la versión 0.10.

flask.message_flashed

This signal is sent when the application is flashing a message. The messages is sent as message keyword argument and the category as 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.

signals.signals_available

Obsoleto desde la versión 2.3: Will be removed in Flask 2.4. Signals are always available

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.

Except for name, all other arguments passed to this method are forwarded to the view class __init__ method.

Changelog

Distinto en la versión 2.2: Añadido el atributo de clase init_every_request.

Parámetros
  • name (str) –

  • class_args (t.Any) –

  • class_kwargs (t.Any) –

Tipo del valor devuelto

ft.RouteCallable

decorators: ClassVar[list[Callable]] = []

Una lista de decoradores para aplicar, en orden, a la función de vista generada. Recuerda que la sintaxis @decorator se aplica de abajo a arriba, por lo que el primer decorador de la lista sería el decorador inferior.

Changelog

Nuevo en la versión 0.8.

dispatch_request()

El comportamiento real de la función de la vista. Las subclases deben anular esto y devolver una respuesta válida. Cualquier variable de la regla de la URL se pasa como argumento de la palabra clave.

Tipo del valor devuelto

ft.ResponseReturnValue

init_every_request: ClassVar[bool] = True

Crea una nueva instancia de esta clase de vista para cada solicitud por defecto. Si una subclase de la vista establece esto como False, se utiliza la misma instancia para cada solicitud.

Una sola instancia es más eficiente, especialmente si se realiza una configuración compleja durante el init. Sin embargo, el almacenamiento de datos en self ya no es seguro a través de las solicitudes, y g debe ser utilizado en su lugar.

Changelog

Nuevo en la versión 2.2.

methods: ClassVar[Optional[Collection[str]]] = None

Los métodos para los que se registra esta vista. Utiliza el mismo valor por defecto (["GET", "HEAD", "OPTIONS"]) que route y add_url_rule por defecto.

provide_automatic_options: ClassVar[bool | None] = None

Controla si el método OPTIONS se maneja automáticamente. Utiliza el mismo valor por defecto (True) que route y add_url_rule por defecto.

class flask.views.MethodView

Envía los métodos de solicitud a los métodos de instancia correspondientes. Por ejemplo, si implementas un método get, se utilizará para gestionar las peticiones GET.

Esto puede ser útil para definir una API REST.

methods se establece automáticamente en función de los métodos definidos en la clase.

Consulte Vistas basadas en las clases para obtener una guía detallada.

class CounterAPI(MethodView):
    def get(self):
        return str(session.get("counter", 0))

    def post(self):
        session["counter"] = session.get("counter", 0) + 1
        return redirect(url_for("counter"))

app.add_url_rule(
    "/counter", view_func=CounterAPI.as_view("counter")
)
dispatch_request(**kwargs)

El comportamiento real de la función de la vista. Las subclases deben anular esto y devolver una respuesta válida. Cualquier variable de la regla de la URL se pasa como argumento de la palabra clave.

Parámetros

kwargs (t.Any) –

Tipo del valor devuelto

ft.ResponseReturnValue

Registros de rutas URL

En general, hay tres maneras de definir las reglas del sistema de enrutamiento:

  1. Puede utilizar el decorador flask.Flask.route().

  2. Puedes utilizar la función flask.Flask.add_url_rule().

  3. Puedes acceder directamente al sistema de enrutamiento subyacente de Werkzeug que se expone como flask.Flask.url_map.

Variable parts in the route can be specified with angular brackets (/user/<username>). By default a variable part in the URL accepts any string without a slash however a different converter can be specified as well by using <converter:name>.

Las partes variables se pasan a la función de la vista como argumentos de palabra clave.

Están disponibles los siguientes convertidores:

string

acepta cualquier texto sin barra (por defecto)

int

acepta números enteros

float

como int pero para valores de punto flotante

path

como el predeterminado, pero también acepta barras inclinadas

any

coincide con uno de los elementos previstos

uuid

acepta cadenas UUID

Los convertidores personalizados pueden ser definidos usando flask.Flask.url_map.

He aquí algunos ejemplos:

@app.route('/')
def index():
    pass

@app.route('/<username>')
def show_user(username):
    pass

@app.route('/post/<int:post_id>')
def show_post(post_id):
    pass

An important detail to keep in mind is how Flask deals with trailing slashes. The idea is to keep each URL unique so the following rules apply:

  1. Si una regla termina con una barra y es solicitada sin barra por el usuario, éste es redirigido automáticamente a la misma página con una barra al final.

  2. Si una regla no termina con una barra final y el usuario solicita la página con una barra final, se genera un 404 no encontrado.

This is consistent with how web servers deal with static files. This also makes it possible to use relative link targets safely.

You can also define multiple rules for the same function. They have to be unique however. Defaults can also be specified. Here for example is a definition for a URL that accepts an optional page:

@app.route('/users/', defaults={'page': 1})
@app.route('/users/page/<int:page>')
def show_users(page):
    pass

Esto especifica que /users/ será la URL de la página uno y /users/page/N será la URL de la página N.

Si una URL contiene un valor por defecto, será redirigida a su forma más simple con una redirección 301. En el ejemplo anterior, /users/page/1 será redirigida a /users/. Si tu ruta maneja solicitudes GET y POST, asegúrate de que la ruta por defecto sólo maneja GET, ya que las redirecciones no pueden conservar los datos del formulario.

@app.route('/region/', defaults={'id': 1})
@app.route('/region/<int:id>', methods=['GET', 'POST'])
def region(id):
   pass

Here are the parameters that route() and add_url_rule() accept. The only difference is that with the route parameter the view function is defined with the decorator instead of the view_func parameter.

rule

la regla URL como cadena

endpoint

the endpoint for the registered URL rule. Flask itself assumes that the name of the view function is the name of the endpoint if not explicitly stated.

view_func

the function to call when serving a request to the provided endpoint. If this is not provided one can specify the function later by storing it in the view_functions dictionary with the endpoint as key.

defaults

A dictionary with defaults for this rule. See the example above for how defaults work.

subdomain

specifies the rule for the subdomain in case subdomain matching is in use. If not specified the default subdomain is assumed.

**options

the options to be forwarded to the underlying Rule object. A change to Werkzeug is handling of method options. methods is a list of methods this rule should be limited to (GET, POST etc.). By default a rule just listens for GET (and implicitly HEAD). Starting with Flask 0.6, OPTIONS is implicitly added and handled by the standard request handling. They have to be specified as keyword arguments.

Ver opciones de funciones

Para uso interno las funciones de vista pueden tener algunos atributos adjuntos para personalizar el comportamiento sobre el que la función de vista normalmente no tendría control. Los siguientes atributos se pueden proporcionar opcionalmente para anular algunos valores predeterminados de add_url_rule() o el comportamiento general:

  • __name__: The name of a function is by default used as endpoint. If endpoint is provided explicitly this value is used. Additionally this will be prefixed with the name of the blueprint by default which cannot be customized from the function itself.

  • methods: If methods are not provided when the URL rule is added, Flask will look on the view function object itself if a methods attribute exists. If it does, it will pull the information for the methods from there.

  • provide_automatic_options: if this attribute is set Flask will either force enable or disable the automatic implementation of the HTTP OPTIONS response. This can be useful when working with decorators that want to customize the OPTIONS response on a per-view basis.

  • required_methods: Si se establece este atributo, Flask siempre añadirá estos métodos al registrar una regla de URL, incluso si los métodos fueron explícitamente anulados en la llamada a route().

Ejemplo completo:

def index():
    if request.method == 'OPTIONS':
        # custom options handling here
        ...
    return 'Hello World!'
index.provide_automatic_options = False
index.methods = ['GET', 'OPTIONS']

app.add_url_rule('/', index)
Changelog

Nuevo en la versión 0.8: Se ha añadido la funcionalidad provide_automatic_options.

Interfaz de línea de comandos

class flask.cli.FlaskGroup(add_default_commands=True, create_app=None, add_version_option=True, load_dotenv=True, set_debug_flag=True, **extra)

Subclase especial del grupo AppGroup que soporta la carga de más comandos de la aplicación Flask configurada. Normalmente un desarrollador no tiene que interactuar con esta clase pero hay algunos casos de uso muy avanzados para los que tiene sentido crear una instancia de esto. ver Scripts personalizados.

Parámetros
  • add_default_commands (bool) – si es True, se añadirán los comandos de ejecución y shell por defecto.

  • add_version_option (bool) – añade la opción --versión.

  • create_app (t.Callable[..., Flask] | None) – un callback opcional al que se le pasa la información del script y devuelve la aplicación cargada.

  • 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.

  • set_debug_flag (bool) – Set the app’s debug flag.

  • extra (t.Any) –

Tipo del valor devuelto

None

Changelog

Distinto en la versión 2.2: Added the -A/--app, --debug/--no-debug, -e/--env-file options.

Distinto en la versión 2.2: Al ejecutar los comandos app.cli se envía un contexto de aplicación, por lo que @with_appcontext ya no es necesario para esos comandos.

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.

get_command(ctx, name)

Dado un contexto y un nombre de comando, devuelve un objeto Command si existe o devuelve None.

list_commands(ctx)

Devuelve una lista de nombres de subcomandos en el orden en que deben aparecer.

make_context(info_name, args, parent=None, **extra)

Esta función, cuando se le da un nombre de información y argumentos, iniciará el análisis y creará un nuevo Context. Sin embargo, no invoca la llamada de retorno del comando real.

Para personalizar rápidamente la clase de contexto utilizada sin sobrescribir este método, establezca el atributo context_class.

Parámetros
  • info_name (str | None) – el nombre informativo de esta invocación. Generalmente este es el nombre más descriptivo para el script o comando. Para el script de nivel superior suele ser el nombre del script, para los comandos inferiores es el nombre del comando.

  • args (list[str]) – los argumentos a analizar como lista de cadenas.

  • parent (Optional[click.core.Context]) – el contexto padre si está disponible.

  • extra (Any) – argumentos clave extras enviados al constructor del contexto.

Tipo del valor devuelto

click.core.Context

Distinto en la versión 8.0: Se ha añadido el atributo context_class.

parse_args(ctx, args)

Dado un contexto y una lista de argumentos, crea el analizador y analiza los argumentos, luego modifica el contexto según sea necesario. Esto es invocado automáticamente por make_context().

Parámetros
Tipo del valor devuelto

list[str]

class flask.cli.AppGroup(name=None, commands=None, **attrs)

Esto funciona de forma similar a un clic normal Group pero cambia el comportamiento del decorador command() para que envuelva automáticamente las funciones en with_appcontext().

No debe confundirse con FlaskGroup.

Parámetros
Tipo del valor devuelto

None

command(*args, **kwargs)

Esto funciona exactamente igual que el método del mismo nombre en un click.Group normal, pero envuelve las devoluciones de llamada en with_appcontext() a menos que se desactive pasando with_appcontext=False.

group(*args, **kwargs)

Esto funciona exactamente igual que el método del mismo nombre en un click.Group normal, pero por defecto la clase del grupo es AppGroup.

class flask.cli.ScriptInfo(app_import_path=None, create_app=None, set_debug_flag=True)

Objeto de ayuda para tratar con las aplicaciones de Flask. Normalmente no es necesario interactuar con él, ya que se utiliza internamente en el envío a click. En futuras versiones de Flask este objeto probablemente jugará un papel más importante. Normalmente es creado automáticamente por la clase FlaskGroup pero también se puede crear manualmente y pasarlo como objeto click.

Parámetros
  • app_import_path (str | None) –

  • create_app (t.Callable[..., Flask] | None) –

  • set_debug_flag (bool) –

Tipo del valor devuelto

None

app_import_path

Opcionalmente la ruta de importación de la aplicación Flask.

create_app

Opcionalmente una función a la que se le pasa la información del script para crear la instancia de la aplicación.

data: dict[t.Any, t.Any]

Un diccionario con datos arbitrarios que se pueden asociar a esta información del script.

load_app()

Carga la aplicación Flask (si aún no está cargada) y la devuelve. Si se llama a esto varias veces, sólo se devolverá la aplicación ya cargada.

Tipo del valor devuelto

Flask

flask.cli.load_dotenv(path=None)

Cargue los archivos «dotenv» en orden de precedencia para establecer las variables de entorno.

Si una var env ya está configurada, no se sobrescribe, por lo que se prefieren los archivos anteriores de la lista a los posteriores.

Esto es un no-op si python-dotenv no está instalado.

Parámetros

path (Optional[Union[str, os.PathLike]]) – Cargue el archivo en esta ubicación en lugar de buscarlo.

Returns

True si se ha cargado un archivo.

Tipo del valor devuelto

bool

Changelog

Distinto en la versión 2.0: El directorio actual no se cambia a la ubicación del archivo cargado.

Distinto en la versión 2.0: Al cargar los archivos env, establezca la codificación por defecto en UTF-8.

Distinto en la versión 1.1.0: Devuelve False cuando python-dotenv no está instalado, o cuando la ruta dada no es un archivo.

Nuevo en la versión 1.0.

flask.cli.with_appcontext(f)

Envuelve una llamada de retorno para que se garantice su ejecución con el contexto de la aplicación del script.

Los comandos personalizados (y sus opciones) registrados en app.cli o blueprint.cli siempre tendrán un contexto de aplicación disponible, este decorador no es necesario en ese caso.

Changelog

Distinto en la versión 2.2: El contexto de la aplicación está activo para los subcomandos, así como para la devolución de llamada decorada. El contexto de la aplicación siempre está disponible para las devoluciones de llamada de comandos y parámetros de app.cli.

flask.cli.pass_script_info(f)

Marca una función para que se pase una instancia de ScriptInfo como primer argumento a la llamada de retorno del clic.

Parámetros

f (click.decorators.F) –

Tipo del valor devuelto

click.decorators.F

flask.cli.run_command = <Command run>

Ejecutar un servidor de desarrollo local.

Este servidor es sólo para fines de desarrollo. No proporciona la estabilidad, seguridad o rendimiento de los servidores WSGI de producción.

The reloader and debugger are enabled by default with the “–debug” option.

Parámetros
  • args (Any) –

  • kwargs (Any) –

Tipo del valor devuelto

Any

flask.cli.shell_command = <Command shell>

Ejecuta un shell interactivo de Python en el contexto de una aplicación Flask determinada. La aplicación rellenará el espacio de nombres por defecto de este shell según su configuración.

Esto es útil para ejecutar pequeños fragmentos de código de gestión sin tener que configurar manualmente la aplicación.

Parámetros
  • args (Any) –

  • kwargs (Any) –

Tipo del valor devuelto

Any