Codea Blog  

Blog Details

Desarrollo web con Python

Introducción

Python es un lenguaje de programación versátil y potente cuyo uso se ha incrementado en los últimos años. Python puede utilizarse para construir aplicaciones de diferentes tipos como móviles, web, machine learning, etc. Para que esto sea posible, el intérprete de Python utiliza frameworks que faciliten el desarrollo de aplicaciones específicas. Para desarrollar aplicaciones web, Python posee diversos frameworks disponibles; los más populares son Flask y Django. En este artículo exploraremos estas dos herramientas y cómo se pueden utilizar para desarrollar aplicaciones web robustas y eficientes.

 

1. Flask: un microframework minimalista

Flask es un microframework web escrito en Python cuya fortaleza y enfoque se basa en la simplicidad y la facilidad de uso. Fue creado por Armin Ronacher que al estar trabajando en el proyecto llamado "Werkzeug" tuvo la idea de un framework ligero. Werkzeug era una biblioteca WSGI (Web Server Gateway Interface) utilizada para la construcción de aplicaciones web en Python. A medida que Ronacher trabajaba con Werkzeug, se dio cuenta de que podría aprovecharlo para construir un framework web más completo y fácil de usar. Luego, en lugar de crear un framework web completo y lleno de características, Ronacher decidió tomar un enfoque minimalista y extensible. Así fue como Flask nació como un microframework, lo que significa que proporciona solo las características básicas y necesarias para construir aplicaciones web, dejando la puerta abierta para que los desarrolladores agreguen las funcionalidades adicionales que necesiten.

 

La filosofía de Flask se basa en la simplicidad, la legibilidad del código y el principio de "hacerlo bien" en lugar de "hacerlo todo". Esto ha permitido a los desarrolladores de Flask construir aplicaciones web de manera rápida y eficiente, adaptadas a sus necesidades específicas.

 

1.1 Flask - Primeros pasos

Flask cuenta con una documentación detallada de las herramientas que proporciona y de cómo utilizarlas, para desarrolladores con mediana experiencia les será sencillo familiarizarse con el framework si hacen uso de la documentación. Para instalar Flask, como muchas otras herramientas de Python, se debe utilizar el gestor de paquetes pip con el siguiente comando en el directorio del proyecto.

 

$pip install Flask

Una vez instalado, se puede crear una aplicación Flask básica con unas pocas líneas de código. Flask utiliza rutas para mapear URLs a funciones específicas que se encargan de procesar las solicitudes y devolver las respuestas adecuadas. Considere el siguiente ejemplo.

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return '¡Hola, Flask!'

@app.route('/saludo/<nombre>')
def saludo(nombre):
    return render_template('saludo.html', nombre=nombre)

if __name__ == '__main__':
    app.run()

 

En este ejemplo, hemos creado una aplicación Flask básica con dos rutas. La ruta principal ('/') devuelve un simple mensaje de saludo, mientras que la ruta '/saludo/<nombre>' muestra un saludo personalizado utilizando una plantilla HTML.

 

La función index() se encarga de manejar las solicitudes a la ruta principal y devuelve un mensaje de saludo básico. La función saludo(nombre) se encarga de manejar las solicitudes a la ruta '/saludo/<nombre>' y utiliza una plantilla HTML para mostrar un saludo personalizado.

 

En el archivo 'saludo.html', podemos tener el siguiente código HTML.

<!DOCTYPE html>
<html>
<head>
    <title>Saludo</title>
</head>
<body>
    <h1>¡Hola, {{ nombre }}!</h1>
</body>
</html>

 

Al acceder a la ruta '/saludo/John', Flask renderizará la plantilla 'saludo.html' y mostrará el mensaje "¡Hola, John!" en el navegador.

 

Flask también ofrece extensiones que facilitan el desarrollo web, como Flask-WTF para manejar formularios, Flask-SQLAlchemy para interactuar con bases de datos y Flask-Login para la gestión de autenticación de usuarios. Al finalizar el artículo se muestran referencias hacia un blog que fue construido usando Flask, donde se puede ver el detalle de estas extensiones y cómo utilizarlas.

 

1.2 Resumen de características

 

- Simplicidad: Flask sigue el principio de "hacer lo mínimo" al proporcionar solo los componentes esenciales necesarios para el desarrollo web. Esto permite a los desarrolladores tener un mayor control sobre la estructura y funcionalidad de sus aplicaciones.

- Extensibilidad: Flask es altamente extensible, lo que significa que se puede mejorar y ampliar fácilmente mediante el uso de extensiones. Hay una amplia gama de extensiones disponibles que abarcan desde autenticación de usuarios hasta integración con bases de datos y API REST.

- Enrutamiento flexible: Flask utiliza un enrutamiento basado en reglas que permite mapear fácilmente las URL a las funciones controladoras correspondientes. Esto facilita la definición de rutas y el manejo de solicitudes HTTP.

- Desarrollo en tiempo real: Flask proporciona un servidor de desarrollo incorporado que permite a los desarrolladores ver los cambios en tiempo real sin necesidad de reiniciar el servidor. Esto acelera el proceso de desarrollo y facilita la depuración.

- Flask-WTF: Flask-WTF es una extensión de Flask que simplifica la creación y validación de formularios web. Proporciona una integración perfecta con el motor de formularios WTForms, lo que facilita la creación y validación de formularios seguros y robustos.

 

1.3 Resumen Flask

Flask es un framework web minimalista y flexible que permite a los desarrolladores de Python construir aplicaciones web rápidas y eficientes. Con su enfoque simplificado y su arquitectura extensible, Flask ofrece un equilibrio ideal entre flexibilidad y funcionalidad. Con Flask, los desarrolladores pueden crear aplicaciones web desde simples hasta complejas, manteniendo el control total sobre la estructura y el flujo de su código.

 

Ya sea que el desarrollador esté comenzando en el desarrollo web o sea un desarrollador experimentado, Flask es una excelente opción para construir aplicaciones web en Python. Su curva de aprendizaje es baja y su flexibilidad permite una amplia gama de usos.

 

2. Django: un framework web completo

Django es un framework web de alto nivel y que sigue el principio de "baterías incluidas" de Python, es decir, herramientas preinstaladas en el intérprete de python. Django ofrece una gran cantidad de características y herramientas listas para usar, lo que facilita el desarrollo rápido de aplicaciones web complejas.

 

El principio de Django se remonta al año 2003, cuando Adrian Holovaty y Simon Willison, dos desarrolladores web, comenzaron a trabajar juntos en una serie de proyectos de noticias locales en línea. Al darse cuenta de que estaban desarrollando funcionalidades comunes en cada uno de sus proyectos, decidieron crear un framework que les permitiera reutilizar y compartir código de manera más eficiente.

 

En julio de 2005, Adrian Holovaty y Simon Willison lanzaron Django como un proyecto de código abierto bajo la organización de noticias Lawrence Journal-World en Kansas, Estados Unidos. Django se destacó rápidamente como un framework web robusto y escalable. Su enfoque en la productividad y la simplicidad lo hizo popular entre los desarrolladores web.

 

Django ha evolucionado continuamente a lo largo de los años. Ha introducido mejoras significativas en cada versión, agregando características como el sistema de plantillas, el sistema de administración, el ORM y el soporte para API REST. Django también ha seguido de cerca las mejores prácticas de desarrollo web y ha abordado las preocupaciones de seguridad de manera continua.

 

En la actualidad, Django es utilizado por una amplia variedad de organizaciones y sitios web de renombre, incluyendo Instagram, Pinterest, Disqus, Spotify y Mozilla, entre otros.

 

2.1 Django - Primeros pasos

Al igual que Flask, Django se instala mediante pip con el comando pip install. Una vez instalado, se puede crear un nuevo proyecto Django y comenzar a definir modelos, vistas y plantillas. Como ya se mencionó, Django proporciona una capa de abstracción de base de datos llamada ORM (Object-Relational Mapping) que permite interactuar con la base de datos sin escribir SQL directamente. Veamos un ejemplo sencillo de una aplicación web que utiliza Django.

 

# Archivo: models.py
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

# Archivo: views.py
from django.shortcuts import render
from .models import Post

def blog(request):
    posts = Post.objects.all()
    return render(request, 'blog.html', {'posts': posts})

# Archivo: urls.py
from django.urls import path
from .views import blog

urlpatterns = [
    path('blog/', blog, name='blog'),
]

# Archivo: blog.html
{% extends 'base.html' %}

{% block content %}
<h1>Blog</h1>

{% for post in posts %}
    <div>
        <h2>{{ post.title }}</h2>
        <p>{{ post.content }}</p>
        <p>{{ post.pub_date }}</p>
    </div>
{% empty %}
    <p>No hay publicaciones en el blog.</p>
{% endfor %}
{% endblock %}


En este ejemplo, hemos creado un modelo Post que representa una publicación en el blog. Luego, en la vista blog(), recuperamos todas las publicaciones del modelo Post y las pasamos a la plantilla blog.html para su presentación. La plantilla blog.html muestra todas las publicaciones del blog.

 

Django cuenta, adicionalmente, con un potente sistema de autenticación y autorización, un administrador de contenido incorporado, soporte internacionalización, entre otros componentes esenciales para el desarrollo web.

 

2.2 Resumen de características

 

ORM (Object-Relational Mapping): Django utiliza su propio ORM para facilitar la interacción con la base de datos. Proporciona una capa de abstracción sobre las bases de datos relacionales, lo que permite a los desarrolladores trabajar con objetos y métodos de Python en lugar de escribir SQL directamente.

Administrador de Django: Django viene con un administrador incorporado que permite la gestión fácil de los modelos de base de datos a través de una interfaz administrativa intuitiva. Con el administrador de Django, los desarrolladores pueden realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) sin escribir código adicional.

Autenticación y autorización: Django proporciona un sistema de autenticación y autorización robusto y escalable. Manejar la autenticación de usuarios, la gestión de sesiones y la autorización basada en roles se vuelve sencillo con las herramientas proporcionadas por Django.

Enrutamiento y vistas: Django utiliza un enrutamiento basado en URL para mapear las solicitudes HTTP a las funciones o clases de vistas correspondientes. Además, Django ofrece potentes vistas basadas en clases que permiten una mayor modularidad y reutilización de código.

Plantillas y etiquetas: Django cuenta con un motor de plantillas incorporado que facilita la generación dinámica de HTML. Las plantillas de Django ofrecen características como herencia, bucles y condiciones, así como etiquetas personalizadas para una mayor flexibilidad en la presentación de datos.

Seguridad y protección contra ataques: Django se preocupa por la seguridad de las aplicaciones web y proporciona medidas para protegerlas contra vulnerabilidades comunes, como la inyección de SQL, la falsificación de solicitudes entre sitios (CSRF) y más.

 

2.3 Resumen Django

Django es un framework web sólido y poderoso que facilita el desarrollo rápido y escalable de aplicaciones web en Python. Con su arquitectura bien estructurada, características avanzadas y enfoque en las mejores prácticas de desarrollo, Django se ha convertido en una opción popular para desarrolladores de todo el mundo. Su comunidad activa, documentación exhaustiva y amplia gama de bibliotecas y extensiones lo convierten en una herramienta versátil y poderosa para construir aplicaciones web profesionales y a gran escala.

 

3. Comparación entre Django y Flask

Django y Flask son dos frameworks web populares en el ecosistema de Python que ofrecen enfoques diferentes para el desarrollo web. Mientras que Django se enfoca en brindar una estructura completa y altamente escalable para aplicaciones web, Flask se destaca por su simplicidad y flexibilidad. En esta comparación, exploraremos las características clave de ambos frameworks.

 

Por un lado, Flask es ideal para aplicaciones web más pequeñas y sencillas, donde se busca simplicidad y flexibilidad. Es muy útil para crear prototipos rápidos y proyectos más pequeños que no requieren todas las características y funcionalidades adicionales que Django ofrece. Flask se puede extender fácilmente con diversas extensiones según las necesidades específicas del proyecto.

 

Por otro lado, Django es perfecto para aplicaciones web más grandes y complejas, que requieren una estructura más definida y un conjunto completo de características predefinidas. Es especialmente útil cuando se necesita un sistema de administración de contenido incorporado o cuando se trabaja con grandes volúmenes de datos. Django tiene una curva de aprendizaje más pronunciada debido a su amplia gama de características, pero puede ser muy productivo en el desarrollo a largo plazo.

 

En términos de rendimiento Flask puede ofrecer una mejor ejecución, debido a que el código fuente es más ligero; sin embargo, esto no es determinante, ya que existen otros factores como, por ejemplo, la respuesta de los servidores que tambien influyen en el rendimiento de la aplicación web.

 

En conclusión, Flask y Django son dos opciones poderosas para el desarrollo web con Python. Flask ofrece simplicidad y flexibilidad, mientras que Django proporciona un conjunto completo de características y herramientas. La elección depende de las necesidades específicas del proyecto y de las preferencias del desarrollador. Ambos frameworks tienen una comunidad activa y una amplia documentación que los respalda, lo que hace que sean tecnologías confiables y en constante evolución.

 


REFERENCIAS

Pallets. (s.f.). Flask Documentation. Recuperado el 17 de julio de 2023, de https://flask.palletsprojects.com/

Django Software Foundation. (s.f.). Django Project Documentation. Recuperado el 17 de julio de 2023, de https://docs.djangoproject.com/

Real Python. (s.f.). Flask vs Django: Which Python Framework Is Better? Recuperado el 17 de julio de 2023, de https://realpython.com/flask-vs-django/

Eduonix. (s.f.). Django vs Flask: A Detailed Comparison. Recuperado el 17 de julio de 2023, de https://www.eduonix.com/blog/python-programming-2/django-vs-flask-detailed-comparison

Flak-blog tutorial, https://youtu.be/MwZwr5Tvyxo

Comentarios

Registrate o Inicia Sesión para comentar y obtener Cursos de pago gratis

function loadurl(){ var val1 = document.getElementById("valor3").value; console.log(val1); if(val1){ window.location = "/comunidad/blog/filtrar/"+val1+"/"} }