Django y Django REST Framework

Que es Django

Django y Django REST Framework

Volver al contenido

Copiar enlace

¿Qué es Django y porque importa? - Django y Django REST Framework

A pesar de que actualmente en el mundo del desarrollo Backend existen muchos Frameworks muy producidos en distintos lenguajes de Programación (Nestjs en Typescript, Laravel en PHP, Spring en JAVA, ASP en C#) y que cada año tenemos nuevas alternativas, Django sigue siendo un framework de desarrollado web backend muy usado, así que muchos se preguntan porque pasa esto ¿porque Django sigue siendo popular?

Bueno, en este artículo me gustaria responder a esta pregunta, pero primero veamos que es Django para los que no lo conocen

¿Qué es Django?

Django es un framework de desarrollo web backend creado en Python, es decir que si ya sabes las bases de Python, luego solo tendrias que estudiar un poco de HTML, CSS y Javascript, lo basico tan solamente, y con estos conocimientos simples podrias pasar a crear aplicaciones web con Django.

https://link.excalidraw.com/readonly/vm4dzzWxaZ7U8marpY5w

De hecho este Framework tiene una enorme cantidad de caracteristicas que son muy utiles para simplificar el desarrollo de proyectos web. Para empezar, una de estas por ejemplo, es la forma en la que se estructuran los proyectos.

Estructura de Proyecto

Y es que que en Django existen 2 terminos importantes, uno es Project y el otro es App.

Por ejemplo si necesitamos crear una tienda virtual, este es un proyecto, pero dentro de la tienda virtual podriamos tambien necesitar crear un carrito de compras, una seccion de categorias, o quizas una seccion para hacer seguimiento de pedidos, o un blog para ir anunciando novedades, bueno todo estos son partes del mismo proyecto pero Django permite que estas partes sean independientes, esto son las apps.

Esto es porque sus desarrolladores consideran que en un proyecto web no solo tendremos una solo tipo de aplicacion sino multiples de estas, que en conjunto forman parte de lo mismo.

https://link.excalidraw.com/readonly/vlag91MYLyoqMKL8Hi2y?darkMode=true

Asi que si creas una web en este framework, tendras un proyecto y podras subdividirla en multiples apps, cada uno en su propia carpeta con sus propios archivos.

Y de hecho no tienes que crearlos desde cero porque Django tambien te da un comando para crear tanto las apps como los proyectos

django-admin startproject <nombre_del_proyecto>

y tambien las apps

python manage.py startapp <nombre_de_la_app>

Routing

Ahora una vez creado tu proyecto necesitaras definir que URLs los usuarios podran visitar, y esto es todo un tema porque en una aplicacion no solo tendremos un par, sino decenas de estas URLS, asi que django tambien tiene un concepto llamado Routing, que permite agrupar las urls por aplicacion para que puedas modificarlas luego con facilidad, o crear muchas de estas

urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    path('articles/<int:year>/', views.year_archive),
    path('articles/<int:year>/<int:month>/', views.month_archive),
    path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]

ademas tambien puedes nombrarlas por sino quieres recordar toda la direccion

urlpatterns = [
    path(..., name='special_case_2003'),
    path(..., name='year_archive'),
    path(..., name='month_archive'),
    path(..., name='article_detail'),
]

MVT (Model View Template)

Y Toda esta estructura de Proyecto muy definida con carpetas y archivos que tienen una organización, hace que los proyectos grandes sean faciles de mantener, asi que si no eres un experto desarrollador, este Framework te quita la tarea de que tu mismo lo hagas, es decir solo sigue la forma en la que Django te dice que hagas las cosas y funcionara.

Y esta forma de organizacion tambien tiene un nombre tecnico llamado Patron Model View Template o MVT

https://media.geeksforgeeks.org/wp-content/uploads/20210606092225/image.png

que basicamente hace referencia a la forma en ala crearemos una URL, esta llamara una funcion que es el View, este consultara la base de datos, que es el Model y esta enviara un HTML que es el Template.

y si ya has desarrollado antes y has escuchado el patron MVC, que viene de Model View Controller, bueno este es casi lo mismo, asi que es solo un nombre que los desarrolladores han visto mas conveniente de usar

https://res.cloudinary.com/practicaldev/image/fetch/s--cKxA0vPx--/c_imagga_scale,f_auto,fl_progressive,h_900,q_auto,w_1600/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r3w6nrip09tf7vr0siko.png

ORM

Ahora de todo el Model View template, el Model es la parte más importa porque hace referencia a como se guardan lo sdato, y es que toda aplicacion web de cierto modo necesita guardar datos, asi que los programas mas tipicos para esta tarea son las bases de datos, que hacen uso de SQL, pero como este es otro lenguaje, los desarrolladores usan una herramienta que facilita esto llamada ORM, que es un abreviado de Object Relational Mapping

un ORM es basicamente un modulo o paquete que maneja por ti las consultas que van a tu sistema gestor de base de datos, es decir que en lugar de escribir SQL, que puede llegar a ser un poco complicado para iniciantes y requiere trabajo y conocimiento mantenerlo, Django te evita esto y te da funciones que crearan por ti las consultas SQL, ademas que otra ventaja es que podras usarlas con multiples bases de datos como PostgreSQL, MySQL, Oracle, entre otras

Y todo esto en la practica todo esto quiere decir que para crear tablas de bases de dato usaras clases como esta:

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    def __str__(self):
        return self.name

Y para hacer consultas código como el siguiente

from blog.models import Blog
b = Blog(name='Beatles Blog', tagline='All the latest Beatles news.')
b.save()

y esta se transformara en una consulta sql.

Y aunque los ORMs no solo existen en Django sino tambien en otros frameworks y lenguajes de programacion, la diferencia es que mientras que en otros tienes que instarlarlos, aqui ya viene por defecto y es una parte esencial del framework.

Y no solo esto, sino que tambien el framework se ocupa de las migraciones, es decir los cambios que son necesarios en tu base de datos para llevar tu aplicacion a produccion

Aunque por supuesto si en algun momento necesitas usar SQL, podras hacer tus consultas en ese lenguaje tambien.

Admin

Con esto practicamente ya estaria definido el framework, pero Django tambien tiene una caracteristica que en mi opinion es de las mejores que ofrece, llamada Admin. Que es muy util, porque ya considera que muchos sitios web necesitan de cierta forma un panel de adminsitrador, donde el usuario necesita crear contenido, o necesita crear usuarios, o en resumen controlar todo tu su sitio web.

Asi que django te da un panel de control, donde puedes logearte como si fuera un panel de administrador de un CMS como Wordpress por ejemplo y controlar todo desde alli.

Solo que este panel de adminitrador tambien se puede personalizar desde codigo, diciendole que puedes editar o quien puede entrar a tu panel, y puedes interactuar con todos los modelos que crees

a diferencia de otros Frameworks en donde probablemente tendrias que crearlo desde cero

Seguridad

Ademas este panel te permite crear usaurios nuevos de tu sistema, y ya viene considerando temas de seguridad, ya que Django tiene una arquitectura de seguridad muy robusta que incluye protección contra ataques CSRF (Cross Site Request Forgery), SQL injection y XSS (cross site scripting)

Comunidad

Ademas que la comunidad de desarrolladores que usa Python, es bastante grande, cuando quieren crear un proyecto web backend, obviamente escogeran el framework más popuplar de este lenguaje, siendo Django la primera opcion para personas que se dedican a otras areas en la que funciona Python.

Django Rest Framework

Ahora si todo esta tan bueno en Django porque simplemente no usamos este Framework para todo, bueno Django fue desarrollado en un epoca donde las aplicaciones web se creaban con multiples paginas HTML que eran procesadas desde el servidor, y a pesar que actualmente podrias crear una web con este enfoque, en realidad actualmnete muchos necesitan hacer que sus sitios web sean muy interactivos, en el sentido que necesitan interfaces que respodnan muy rapido, que traigan datos al intante y los muestre en el navegador y que cuando cambien de pagina sea veloz, todo esto se logra con frameworks de Frontend de Javascript, y es algo que reemplaza a los tipicos templates de Django.

Es decir que en lugar de simplemente usar HTML, estos dias se usa mucho más javascript para crear las interfaces, al permitir crear aplicaciones rapidas y dinamicas.

Entonces Django ya no se usa? Bueno no tanto asi, como te mencione al inicio, Django es un Framework de backend muy bueno, pero si quieres lo mejor de frontend y backend seria bueno que uses a Django solo para que sirva datos desde el Backend y que el frontend sea mucho mejor un framework de Frontend, esto hara que tengas lo mejor de ambos mundo.

https://link.excalidraw.com/readonly/gq5sI5vlRkEVzPVBEflE?darkMode=true

Ahora las aplicaciones de backend que tipicamente solo responden datos sin nada de html ni interfaces son llamadas REST APIs, siendo el formato más tipico que respoden, el formato JSON.

Y a pesar que django ya puede responder datos en json, y tu desde cero puedes crear tu REST API, hay un modulo que lo simplifica mucho más todo esto, llamado Django REST Framework, el cual al instalarlo, añade caracteristicas nuevas a Django, es decir este hace que puedas usar todas las funcionalidades que ya te mencione de Django, pero que te sea muy facil crear tu REST API, por ejemplo con unas pocas lineas de codigo puedes generar un CRUD completo, puedes serializar datos en JSON, es decir que convierta los datos de Python a JSON muy facilmente, y puedas asegurar tu API con JSon web tokens facilmente.

Y sumado a esto que ya tienes tu ORM, panel administrador y poder servir archivos, basicamente hace que django sea como una especie de Headless CMS personalizable

Por cierto si no sabes que es un Headless CMS, te dejo el video aquí.

Así que todo esto te permite crear aplicacione modernas, porque incluso puedes usar Frameworks de Frontend muy producidos o luego añadir tambien aplicaciones moviles, aplicaciones de escritorio y demas.

https://link.excalidraw.com/readonly/vCOaUWRWsOwoLEVU5jeD?darkMode=true

Y a pesar que este no es el unico framework del ecosistema de Python, ya que tambien esan otros como lo es Flask y FastAPI, Django sigue siendo de los más usados, debido a todo lo que ofrece.

Porque usar Django

Entonces en resumen ¿porque se sigue usando Django?. Bueno algo muy comun que he visto es que muchos profesionales que no se dedican a crear webs tienen a ver a Python como un lenguaje muy practico.

En mi dia a dia he visto por ejemplo personas que trabajan en el rubro financiero y que usan Python para analisis de datos, o personas que se dedican al Trading, o que se dedican a la ciencia de datos y claro cuando quieren crear una web, si pueden hacerlo con un lenguaje que ya conocen, y que usan a diario iran por el

Ademas Espero que noten tambien, que esta es una de las razones de por la que existen tantos frameworks y bibliotecas en distintos lenguajes que practicamante hacen lo mismo.

Y es que Python es un lenguaje muy sencillo de aprender, y a pesar que no es de los má velocez para muchos desarrolladores y proyectos, este es mas que suficiente

Conclusion

En fin como Puedes ver Django es un Framework muy util, y que para cierto tipo de profesionales que usan mucho Python en su dia a dia, puede ser de los mejores frameworks que tienen a su disposiciones, sumado a que tambien es bastante popular en la comunidad, creo que lo vuelve de las mejores opciones. Aunque en mi opinion es un framework que si necesita sus horas de practica para dominarlo, y empezar a ser productivos con el.

Por lo que si quieres aprender a usarlo, te dejo el curso de Django y Django Rest Framework para que puedas aprender a usarlos.

Y si quieres un resumen de los puntos importantes que hemos visto esta es la lita completa que tratamos:

  • ¿Qué es Django?
    • Estructura de un proyecto en Django (MVT)
    • Routing
    • Templates
    • ORM
    • Admin
    • Seguridad
    • Comunidad
    • Que es Django REST Framework
    • ¿Porque Aprender Django?
Actualizado por ultima vez el

Django y Django REST Framework son los frameworks de Python mas populares que puedes usar actualmente para crear aplicaciones backend de todo tipo

¿Quieres Compatir mi Contenido?

Publicado:hace 2 años

Actualizado:hace un año

;