A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Curso de Flask

Curso de Flask

Bernardo Cassina

Bernardo Cassina

Configuraci贸n de Flask

16/36
Recursos

Para activar el development mode debes escribir lo siguiente en la consola:

export FLASK_ENV=development
echo $FLASK_ENV

SESSION: es un intercambio de informaci贸n interactiva semipermanente, tambi茅n conocido como di谩logo, una conversaci贸n o un encuentro, entre dos o m谩s dispositivos de comunicaci贸n, o entre un ordenador y usuario.

Aportes 35

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Automatiza el levantar tu entorno virtual de desarrollo (venv) con un script.

#!/bin/bash

pip install -r requierements.txt
source venv/bin/activate

export FLASK_APP=main.py
export FLASK_DEBUG=1
export FLASK_ENV=development

flask run

  1. Crea un archivo nuevo en la ra铆z del proyecto y copia el script de arriba.
  2. Gu谩rdalo con extension .sh
  3. Ejec煤talo en consola: $ source file_name.sh
  4. You welcome!

Por si le es 煤til a alguien, una opci贸n para agregar la configuraci贸n dentro del main:


Correr la aplicaci贸n, con el famoso if name == 鈥main鈥:

Completo

Como aporte en python existen varias formas de generar strings seguros.

Esta es una de ellas:

import os, binascii
binascii.b2a_hex(os.urandom(20))

Que como resultado daria algo as铆:

'b6026f861fd41a94c3389d54293de9d04bde6f7c'

Otra forma es usando el modulo secrets que segun su propia documentaci贸n indica que se utiliza para generar n煤meros aleatorios criptogr谩ficamente fuertes, adecuados para administrar datos como contrase帽as, autenticaci贸n de usuarios, tokens de seguridad y secretos relacionados, el codigo seria este:

import secrets
secrets.token_hex(20)

Que como resultado dar铆a algo as铆:

'ccaf5c9a22e854856d0c5b1b96c81e851bafb288'

Por ultimo se puede usar tamb铆en la funci贸n token_urlsafe con este codigo:

secrets.token_urlsafe(20)

Obteniendo como resultado algo as铆:

'dxM4-BL1CPeHYIMmXNQevdlsvhI'

Tambien pueden agregar la configuracion de esta manera:

app = Flask(name)
app.config[鈥楨NV鈥橾 = 鈥榙evelopment鈥

Para el que est茅 trabajando en windows, le dejo los siguientes comandos para el powershell:

$env:FLASK_ENV="development"
$env:FLASK_APP="nombredeapp.py"

Comparto una 鈥渂uena pr谩ctica鈥 (porfavor corrijan si no es as铆)
de como usar las variables de configuraci贸n para flask

SECRET_KEY = secret_string
app.config.from_pyfile('config.py')

En el minuto 4:01 menciona que la SECRET_KEY se debe generar de una manera programatica. Bueno esto logramaos con la funci贸n urandom la cual importamos de la libreria os (https://flask.palletsprojects.com/en/1.1.x/config/)

from os import urandom
from flask import Flask
-------
app = Flask(__name__)
app.config['SECRET_KEY'] = urandom(16)

Pero me queda una duda 驴se puede escribir directamente en el c贸digo o necesariamente el output de la funci贸n se debe guardar en una variable de ambiente?

El profesor est谩 equivocado. lo que vemos en el navegador es una cookie que tiene una referencia a la sesi贸n, las sesiones son del lado del servidor y las cookie del lado el cliente. entonces ese Hash en Value es la referencia a la sesi贸n. y en esta sesi贸n que est谩 en el servidor tenemos guardada la IP, la cual luego se env铆a al HTML por que as铆 se programo en la linea 41.

En caso de que no corra session, lo tienes que instalar, agr茅galo a requirements.txt como flask-Session e inst谩lalo recursivamente en con pip install -r requirements.txt

隆Hola Comunidad!
.
Si est谩s usando PowerShell a cambio de CMD.exe (como deber铆as 馃) y no te funcion贸 asignar el ambiente de desarrollo utilizando set, te dejo aqu铆 la manera en c贸mo asignarlo en PowerShell:
.
Luego de detener la ejecuci贸n de Flask, escribe lo siguiente:

(myenv) PS C:\tu_ruta\python\flask> $env:FLASK_ENV="development"

Recuerda que esto lo debes hacer desde la ruta de tu proyecto. Luego reinicia Flask con flask run y ya ver谩s asignado el entorno de desarrollo:

* Serving Flask app "main.py" (lazy loading)
* Environment: development
* Debug mode: on

Antes de irme les recomiendo utilizar PowerShell a cambio de CMD.exe. Revisen aqu铆.

.
Espero les sirva.
.
隆Saludos!

En el script de python.

if __name__ == "__main__":
    
    app.run(debug=True)

Dejo este recurso que explica el uso de la libreria python-dotenv que ayuda mucho en el momento de hacer la configuraci贸n de flask, espero les sea de utilidad

https://prettyprinted.com/tutorials/automatically_load_environment_variables_in_flask

Yo lo que hice fue agregar las siguientes lineas en el archivo activate de mi entorno virtual

export FLASK_APP=main.py
export FLASK_DEBUG=1
export FLASK_ENV=development 

隆Hola Comunidad!
.
Al ver el video me qued茅 pensando en cu谩l ser铆a la mejor manera (o una de las mejores) de generar un SECRET_KEY que fuera seguro para poder guardar la data asociadas a las peticiones del usuario.
.
Creo que si lo pensamos unos minutos todos podemos convenir en que deber铆a ser un n煤mero aleatorio (que ser铆a realmente un string con caracteres num茅ricos) o combinaci贸n alfanum茅rica aleatoria (que nuevamente ser铆a un string con caracteres mixtos).
.
Esto me hizo recordar un video donde se usaba la librer铆a SO que alude al sistema operativo de tal manera que pod铆amos llamar a su m茅todo os.urandom(x) y as铆 crear una cadena de texto con caracteres alfanum茅ricos e incluso caracteres especiales. Busqu茅 la documentaci贸n de este m茅todo en la librer铆a OS y especificamente lo recomiendan para uso criptogr谩fico. Aqu铆 la documentaci贸n.
.
Seg煤n la revisi贸n que hice podr铆amos generar el valor aleatorio de la siguiente manera:

import os
mi_valor_aleatorio = os.urandom(12)

Si imprimimos mi_valor_aleatorio deber铆amos ver algo similar a esto:

\x94\x00x7\xbe\x04\xa2R

** Y, as铆 podr铆amos asignar este valor aleatorio y por lo tanto seguro a nuestra clave 鈥淪ECRET_KEY鈥. **
.
Revisando la documentaci贸n de Flask (cosa que deb铆 hacer antes de toda la pensadera 馃ぁ) me di con la sorpresa que han colocado como ejemplo la misma idea a la que inicialmente pude llegar. Aqui la documentaci贸n.
.
Espero esa documentaci贸n les sirva.
.
隆Saludos!

Para quienes quieren automatizar el venv en win:

crean un archivo con terminacion .bat y guardan el siguiente scrip.

Puede dejar el archivo en la carpeta principal del proyecto o donde quieran, pero deberan modificar la direccion de la carpeta.

CALL venv\Scripts\activate.bat 
    pip install -r requierements.txt
    set "FLASK_APP=main.py"
    set "FLASK_DEBUG=1"
    set "FLASK_ENV=development"
    flask run

Se se super sencillo!!

Este curso est谩 tan desactualizado que es casi imposible de seguir. Deber铆an ser m谩s cuidadosos en ese sentido y sacar de la lista todos los cursos desactualizados.

para Windows el comando es
set FLASK_ENV=development

Nose si les dio la duda como a mi, pero SI, si colocamos

export FLASK_ENV=production

Vuelve a production

Si no pueden setear la secret key como en la clase int茅ntenlo de esta forma:

app.secret_key = 'SECRET KEY'

MI RESUMEN (con c贸digo) 馃槂 馃悕
Activar el ambiente development, quitar la opcion de production por default que tiene flask

export FLASK_ENV=development

Para crear una sesi贸n segura en Flask, iniciamos importando la libreria session y despues agregamos la sesi贸n segura. Para generar la clave segura utilizaremos la libreria secrets

from flask import session
import secrets

my_key = secrets.token_hex(20)
app.config['SECRET_KEY'] = my_key

Guardamos la IP ahora en la sesi贸n, ya no en la cookie.

session['user_ip'] = user_ip

En la ruta hello cambiamos

user_ip = session.get('user_ip')

Por si le sirve a alguien, para ver el contenido de la variable de entorno es

echo $FLASK_ENV

Por si alguien usa PowerShell, puede declarar las variables asi:

$env:FLASK_ENV="development"

Llave secreta

Excelente, manejo de sessiones realmente f谩cil. Gracias.

Oiga, alguien sabe como comentar en los render? Porque cuando lo hago los comentarios aparecen ah铆 en la p谩gina

jajajajaja, esa corroboracion, me gust贸

echo "no bugs found!!!"

Super bien explicado!

Saludos amigos aqui les dejo un blog interesante acerca de las configuraciones de FLASK que de seguro les sera util:

estupendo, excelente u.u