Configuración de la aplicación en flask

configuracion-de-la-aplicacion-en-flask Escrito por @gnuxdar   Publicado 14/06/2023

La configuración de la aplicación
Una aplicación Flask es una instancia de la clase Flask. Todo lo relacionado con la aplicación, como la configuración y las URL, se registrarán con esta clase.

La forma más sencilla de crear una aplicación Flask es crear una instancia global de Flask directamente en la parte superior de tu código, como se hizo en el ejemplo de "Hola, mundo" en la página anterior. Si bien esto es simple y útil en algunos casos, puede causar algunos problemas complicados a medida que el proyecto crece.

En lugar de crear una instancia global de Flask, la crearás dentro de una función. Esta función se conoce como la fábrica de la aplicación. Cualquier configuración, registro y otra configuración que la aplicación necesite se realizará dentro de la función, y luego se devolverá la aplicación.

 

La Fábrica de la Aplicación
¡Es hora de empezar a codificar! Crea el directorio "flask_todolist" y añade el archivo "__init__.py". El archivo "__init__.py" cumple una doble función: contendrá la fábrica de la aplicación y le indicará a Python que el directorio "flask_todolist" debe ser tratado como un paquete.

 

$ mkdir flask_todolist

 

flask_todolist/__init__.py

import os
from flask import Flask

def create_app(test_config=None):
   # create and configure the app
   app = Flask(__name__, instance_relative_config=True)
   app.config.from_mapping(
       SECRET_KEY='dev',
       DATABASE=os.path.join(app.instance_path, 'flask_todolist.sqlite'),
   )
   if test_config is None:
       # load the instance config, if it exists, when not testing
       app.config.from_pyfile('config.py', silent=True)
   else:
       # load the test config if passed in
       app.config.from_mapping(test_config)
   # ensure the instance folder exists
   try:
       os.makedirs(app.instance_path)
   except OSError:
       pass
   # a simple page that says hello
   @app.route('/hello/')
   def hello():
       return 'Hello, World!'
   return app

 

La función "create_app" es la fábrica de aplicaciones. Añadirás más cosas a esta función más adelante en el tutorial, pero ya hace mucho.

  1.    "app = Flask(__name__, instance_relative_config=True)" crea la instancia de Flask.
           ◦ "__name__" es el nombre del módulo Python actual. La aplicación necesita saber dónde se encuentra para configurar algunas rutas, y "__name__" es una forma conveniente de indicarlo.
           ◦ "instance_relative_config=True" indica a la aplicación que los archivos de configuración están relativos a la carpeta de instancia. La carpeta de instancia se encuentra fuera del paquete "flask_todolist" y puede contener datos locales que no se deben subir al control de versiones, como secretos de configuración y el archivo de base de datos.
  2. "app.config.from_mapping()" establece algunas configuraciones predeterminadas que la aplicación utilizará:
           ◦ "SECRET_KEY" se utiliza por Flask y las extensiones para mantener los datos seguros. Se establece en 'dev' para proporcionar un valor conveniente durante el desarrollo, pero se debe reemplazar por un valor aleatorio al implementar la aplicación.
           ◦ "DATABASE" es la ruta donde se guardará el archivo de base de datos SQLite. Está ubicado en "app.instance_path", que es la ruta que Flask ha elegido para la carpeta de instancia. Aprenderás más sobre la base de datos en la siguiente sección.
  3. "app.config.from_pyfile()" reemplaza la configuración predeterminada con los valores tomados del archivo "config.py" en la carpeta de instancia, si existe. Por ejemplo, al implementar la aplicación, esto se puede utilizar para establecer un valor real para "SECRET_KEY".
           ◦ "test_config" también se puede pasar a la fábrica y se utilizará en lugar de la configuración de instancia. Esto permite configurar los tests que escribirás más adelante en el tutorial de manera independiente de los valores de desarrollo que hayas configurado.
  4. "os.makedirs()" asegura que "app.instance_path" exista. Flask no crea automáticamente la carpeta de instancia, pero debe crearse porque tu proyecto creará el archivo de base de datos SQLite allí.
  5. "@app.route()" crea una ruta simple para que puedas ver que la aplicación funciona antes de profundizar en el resto del tutorial. Crea una conexión entre la URL "/hello" y una función que devuelve una respuesta, en este caso la cadena 'Hello, World!'.

    Correr la Aplicación
    Ahora puedes ejecutar tu aplicación utilizando el comando "flask". Desde la terminal, indica a Flask dónde encontrar tu aplicación y luego ejecútala en modo de depuración. Recuerda que aún debes estar en el directorio principal "flask-tutorial", no en el paquete "flask_todolist".

 

El modo de depuración muestra un depurador interactivo cada vez que una página genera una excepción y reinicia el servidor cada vez que realizas cambios en el código. Puedes dejarlo en ejecución y simplemente actualizar la página del navegador a medida que sigues el tutorial.

$ flask --app flask_todolist run --debug

 

se vera una salida similar a esta:

* Serving Flask app "flask_todolist"
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: nnn-nnn-nnn

 

Visita http://127.0.0.1:5000/hello/ en un navegador y deberías ver el mensaje "Hello, World!". ¡Felicitaciones, ahora estás ejecutando tu aplicación web Flask!

Si otro programa ya está utilizando el puerto 5000, verás OSError: [Errno 98] o OSError: [WinError 10013] cuando el servidor intente iniciar. Consulta "Address already in use" para saber cómo manejar eso.

← Proyecto en Flask | Definir y Acceder a la Base de Datos → 



Atras

Últimas Publicaciones

Le puede interesar los ultimos articulos públicados

Como agregar JavaScript Custom en Magento 2 como-agregar-javascript-custom-en-magento-2

En este Post aprenderemos a personalizar la tienda Magento 2. Descubre cómo incorporar JavaScript personalizado para mejorar la funcionalidad y ...

Leer más...
Current version of RDBMS is not supported current-version-of-rdbms-is-not-supported

Current version of RDBMS is not supported. Used Version: 10.6.17-MariaDB-1:10.6.17+maria~ubu2004. Supported versions: MySQL-8, MySQL-5....

Leer más...
Claves para Aprender Desarrollo Web de Manera Efectiva claves-para-aprender-desarrollo-web-de-manera-efectiva

Los principales motivos para aprenderLa motivación es uno de los pilares fundamentales en el proceso de aprendizaje del desarrollo web....

Leer más...
Dominando el Estilo Un Viaje al Mundo de CSS ✨ dominando-el-estilo-un-viaje-al-mundo-de-css

✨ Dominando el Estilo: Un Viaje al Mundo de CSSEn el universo del desarrollo web, CSS (Cascading Style Sheets) desempeña un papel funda...

Leer más...