Django – Framework para perfeccionistas con deadlines

Django

Django es el framework web más conocido en el ámbito del desarrollo web en Python. Además, este framework es open source, de carácter general y tiene una de las mejores comunidades de desarrolladores que hay en Python.

Aquí encontrarás toda la información necesaria para dominar este framework.

Descargar django gratis

Este framework es open source y se puede instalar siguiendo los pasos aquí. Aunque, al estar en el repositorio oficial de Python se puede instalar usando pip o descargar el código fuente de GitHub con facilidad:

$ pip install django
o
$ git clone https://github.com/django/django.git

¿Por qué usar Django?

Este framework es utilizado principalmente por las características de primer nivel que trae, además de porque «viene con las pilas cargadas», lo que significa que la mayoría de las herramientas necesarias para crear una aplicación pequeña o grande están incluidas por defecto. A continuación, se muestran características principales.

Gestión de usuarios

La gestión de usuarios utilizando este framework es sumamente sencilla, dado que por defecto defecto se delega en Django para que lo haga. Tiene soporte para la integración autenticación de terceros y manejo de sesiones tanto en base de datos como usando cookies.

ORM integrado

Este framework dispone de uno de los mejores mapeadores relacionales de objetos (ORM) que hay para Python.

En primer lugar, está construido para el framework y permite hacer consultas complejas de forma fácil cómo se puede ver en los siguientes ejemplos:

# Sin ORM
cur = connections['nombre_conexion'].cursor()
cur.execute('select count(*) from usuarios;')
num_usuarios = cur.fetchall()
# Con ORM
num_usuarios = Usuarios.objects.count()

# Ejemplo filtrando tablas relacionadas Usuarios y Posts
# Buscar los Posts del usuario con nombre de usuario pepe
# Sin ORM
cur = connections['nombre_conexion'].cursor()
cur.execute("""select * 
                 from posts p, usuarios u
                where p.usuario_id = u.id
                   and u.username = 'pepe';""")
posts_pepe = cur.fetchall()
# Con ORM
posts_pepe = Posts.objects.filter(usuario__username='pepe')

En segundo lugar, la definición de objetos es simple:

class Cat(models.Model):
    name = models.CharField(max_length=40, blank=False)
    age = models.FloatField()

    def __str__(self):
        return f'{self.name} - {self.age} years'

Y en tercer lugar, el ORM no solo se encarga del mapeo, sino también de las migraciones de datos que se deben de realizar al cambiar cualquier objeto (modificando las tablas de la base de datos).

Además, se puede acceder fácilmente a los datos de la base de datos usada mediante una shell interactiva para realizar consultas directamente en la consola, lo que es de gran ayuda.

$ python manage.py shell
Python 3.8.0 (v3.8.0:fa919fdf25, Oct 14 2019, 10:23:27) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from catapp.models import Cat
>>> Cat.objects.all()
<QuerySet [<Cat: Niky - 1.0 years>, <Cat: Garfield - 4.0 years>]>
>>> Cat.objects.filter(age__gt=1)
<QuerySet [<Cat: Garfield - 4.0 years>]>

Panel de administración

De forma nativa este framework tiene la capacidad de poder registrar casi cualquier objeto mapeado con el ORM en un panel de administración. Este panel permite gestionar los objetos guardados en la base de datos, además de controlar el acceso de usuarios. Este panel genera todos los formularios y lógica para hacer las operaciones CRUD (Create-Read-Update-Delete) de cada objeto.

from django.contrib import admin
from catsite.catapp.models import Cat


class CatAdmin(admin.ModelAdmin):
    pass


admin.site.register(Cat, CatAdmin)

Filosofía DRY

El principio de programación de DRY (Don’t Repeat Yourself – no te repitas) se aplica en todos los niveles del framework. Este principio permite mantener el foco en lo que verdaderamente importa sin tener que repetir una y otra vez la misma lógica en diferentes niveles de abstracción. Un ejemplo claro se podría encontrar en la definición de las columnas de un modelo del ORM

class Comentario(models.Model):
    texto = models.CharField(max_length=40, blank=False)

Con este código tan simple se está definiendo: un modelo llamado Comentario, que tiene una columna denominada texto, que el texto no puede ser mayor de 40 caracteres y que no puede dejarse en blanco en ningún formulario. Simplemente con esa definición, cualquier formulario será validado siguiendo esos requisitos y no se necesitan más validadores ni en el frontend (HTML+JS) ni en la base de datos, quedando la definición muy concisa y robusta.

Comunidad y documentación excepcional

Una de las principales ventajas de utilizar un framework usado masivamente es que hay documentación, expertos y tutoriales a raudales y la comunidad de este proyecto siempre intenta ayudar a resolver problemas. Es muy fácil encontrar a alguien que ha solucionado el mismo problema que se esté experimentando con una simple búsqueda en google.

Google – 52 M de resultados

GitHub – 347 K repositorios

StackOverflow – 247 K resultados

Resultados de búsqueda usando django en sitios relevantes de desarrollo

Seguridad avanzada

uno de los focos principales de este framework es la seguridad y para ello provee de herramientas para que sea complicado realizar operaciones de SQL Injection u otro tipo de ataques.

Patrón MVC (o MVT)

El patrón por defecto que se utiliza en este framework es MVC (Model-View-Controller; modelo vista controlador) y se basa en tener la lógica aislada en tres bloques:

  • Modelo: por un lado se definen los modelos, los cuales en la mayoría de los casos se mapean a uno o a varios objetos en la base de datos usando el ORM.
  • Vista: las vistas son las encargadas de mostrar la información de forma óptima al usuario. Particularmente en este framework también se encargan de la lógica de validación de formularios.
  • Controlador: el controlador se encarga de enrutar correctamente las peticiones de los usuarios. Dado que esta parte está estrechamente integrada en el framework, se suele cambiar por Template (plantillas) en vez de Controlador implementando el patrón MVT. En MVT las plantillas cobran especial relevancia para mostrar la información al usuario de forma avanzada

Vistas basadas funciones y clases

Las vistas en este framework definen la lógica de qué hacer para cada petición que proviene del usuario, pero en django existen dos formas de crear vistas, las basadas en funciones y las basadas en clases.

La gran ventaja de las vistas basadas en clases es poder usar la herencia y reutilización de código de forma muy potente, lo que las convierte en una gran herramienta.

def cats_list(request):
    cat_list_objects = Cat.objects.all()
    return render(request, 'catapp/cat_list.html', {'cat_list': cat_list_objects})

vs

class CatList(ListView):
    model = Cat

Sistema de plantillas avanzado

El lenguaje de plantillas que se utiliza en este framework es Jinja2. Es un potentisimo sistema que permite evaluar expresiones, añadir comentarios, utilizar bucles para renderizar el código y una de las partes más importantes, permite la extensión de plantillas.

Al poder extender unas plantillas con otras, se puede implementar un sistema en el que haya una plantilla base para cualquier página de la aplicación web, que todas las demás plantillas extienden como necesiten.

La forma de extender las plantillas se hace usando bloques (block) como se muestra a continuación:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Cat's Page</title>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
{% extends 'base.html' %}

{% block content %}
    {% for cat in cat_objects %}
        <div class="single-cat">
            <span class="name">{{ cat.name }}</span>
            <span class="age">
                {% if cat.age < 1 %} kitty 
                  {% else %}{{ cat.age }}
                {% endif %}</span>
        </div>
    {% endfor %}
{% endblock %}

Empresas usando django

Muchisimas empresas alrededor del mundo usan este framework, lo que permite que cada día más ofertas de trabajo pidan como requisito conocerlo.

Algunas de las empresas más grandes que utilizan este framework son Instagram, Mozilla, National Geographic, Pinterest, pixabay o Disqus entre muchos otros.

Haciendo una búsqueda rápida en LinkedIn para ver ofertas que demandan conocer Django se puede ver que hay más de 14.000 ofertas de trabajo en todo el mundoBúsqueda en LinkedIn

Libros de Django recomendados

Los libros recomendados para aprender y sacar el máximo provecho a este framework son los siguientes:

Libros recomendados para aprender Python

Estos son los libros que pueden ayudarte a aprender Python, aprender a programar, tipos de datos, algoritmia y mucho más.

Disponible en:

Compartir

1 respuesta

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Ver más

  • Responsable: Oscar Ramirez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento: No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a ionos (1&1) que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Publicar un comentario