| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Flask Python es un sencillo framework web, idóneo tanto para principiantes como para profesionales. Flask incluye únicamente lo esencial, pero los usuarios pueden implementar bibliotecas externas para ampliar sus funcionalidades.
virtualenv venv
source venv/bin/activate
pip install Flask psycopg2-binary Flask-SQLAlchemy Flask-Mail flask_cors PyJWT
Organiza tu proyecto con esta estructura básica
my_flask_app/ ├── app.py # Archivo principal de la aplicación ├── config.py # Configuración de la app (base de datos, correo) ├── models.py # Definición de los modelos de la base de datos ├── .env └── requirements.txt # Dependencias del proyecto
Para trabajar con la base de datos necesitas crear una cuenta en neon.tech y ahí crear una base de datos gratuita, te dará el comando completo que deberás copiar y agregar en tu archivo .env
# config.py
from dotenv import load_dotenv #Importamos el paquete dotenv
import os
load_dotenv() # Cargamos el archivo con las variables de entorno y vamos a usar os.getenv('nombre_variable') para acceder al dato
class Config:
SECRET_KEY = os.getenv('SECRET_KEY') # os.environ.get('SECRET_KEY') or 'una_llave_secreta'
SQLALCHEMY_DATABASE_URI = os.getenv('BBDD_URL') # os.environ.get('BBDD_URL')
SQLALCHEMY_TRACK_MODIFICATIONS = False
JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY') #or 'una_llave_secreta_para_jwt' # Nueva clave para JWT
# Configuración para enviar correo
MAIL_SERVER = 'smtp.dreamhost.com'
MAIL_PORT = 587
MAIL_USE_TLS = True
MAIL_USERNAME = os.getenv('EMAIL_USER') # Añade tu email #'fernando@hackademy.mx'
MAIL_PASSWORD = os.getenv('EMAIL_PASS') # Añade tu password #'2yZtrUQK'
En nuestro archivo .env vamos a guardar los datos de nuestras variables:
EMAIL_USER=dirección de correo de la que mandaremos mails EMAIL_PASS=contraseña del correo JWT_SECRET_KEY=en gogle hay generadores de secrets para JWT BBDD_URL='el comando que te da neon'
En el archivo models.py importamos SQLAlquemy que será nuestro ORM, con esto podemos trabajar con la base de datos a traves de clases. Nuestro primer modelo será el de usuarios.
# models.py
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(120), unique=True, nullable=False)
password = db.Column(db.String(60), nullable=False)
otp = db.Column(db.String(6), nullable=True)
is_verified = db.Column(db.Boolean, default=False)
Vamos a crear nuestra aplicación, para esto deberemos de modificar el archivo app.py
# app.py
from flask import Flask
from config import Config
from models import db
import random
from flask import request, jsonify
from models import User
from flask_mail import Mail, Message
app = Flask(__name__)
app.config.from_object(Config)
db.init_app(app)
with app.app_context():
db.create_all()
Ahora vamos a desarrollar la primer funcionalidad de nuestro proyecto, un EP que nos permita registrar usuarias en nuestra base de datos, para esto vamos a agregar código despues del método ```db.create_all()``. Recuerda que para python lo importante es la identación así que nuestro código, del EP, debe de empezar al inicio de la línea.
mail = Mail(app)
def generate_otp():
return str(random.randint(100000, 999999))
@app.route('/register', methods=['POST'])
def register():
data = request.get_json()
email = data.get('email')
password = data.get('password')
# Verifica si el usuario ya existe
if User.query.filter_by(email=email).first():
return jsonify({'message': 'El usuario ya existe.'}), 400
# Crea el usuario con OTP
otp = generate_otp()
new_user = User(email=email, password=password, otp=otp)
db.session.add(new_user)
db.session.commit()
# Envía el correo electrónico con OTP
msg = Message('Verificación de tu cuenta', sender=app.config['MAIL_USERNAME'], recipients=[email])
msg.body = f'Tu OTP es: {otp}'
mail.send(msg)
return jsonify({'message': 'Usuario registrado. Revisa tu correo para la verificación.'}), 201
Este endpoint:
Con esto ya tienes una estructura básica para el registro. En el próximo paso, agregaremos la lógica para que el usuario valide su OTP y active su cuenta.
Para correr tu proyecto y hacer pruebas necesitas ejecutar, en la terminal de VS Code, el siguiente comando python -m flask run con esto tu proyecto estará corriendo. La terminal te dará una url tipo 127.0.0.1:5000 que es donde está corriendo tu proyecto, deberás abrir Postman y configurar un EP POST para pasarle una URL tipo 127.0.0.1:5000/register.
En Postman debes de configurar para el el body sea raw y json, para pasar un json con esta estructura:
{
"email":"",
"password":"",
"date_birth":""
}
| Back | FazBrowse Home | New Git URL |