Saltar al contenido principal

Desarrollo Web Django en Python

Aprende los fundamentos del desarrollo web utilizando Django para construir aplicaciones de blog que tengan la funcionalidad (CRUD) Crear, Leer, Actualizar, Eliminar.
Actualizado 11 sept 2024  · 12 min de lectura

Django es un framework de desarrollo web gratuito, de código abierto y de alto nivel ampliamente utilizado. Proporciona muchas funciones a los desarrolladores "listas para usar", por lo que el desarrollo puede ser rápido. Sin embargo, los sitios web construidos a partir de él son seguros, escalables y mantenibles al mismo tiempo.

Objetivo

El objetivo de este tutorial es construir una aplicación de blog en la que se pueda crear y actualizar el contenido del blog a través de un panel de administración. Los contenidos del blog se muestran en la página y se pueden eliminar si es necesario. La aplicación en general proporciona funcionalidad CRUD (Crear, Leer, Actualizar, Eliminar).

Este tutorial no utiliza ninguna tecnología FrontEnd como Javascript, CSS, etc., sino que se centra en conceptos básicos pero esenciales que son necesarios en todo Desarrollo Web Django.

Configuración necesaria

  1. Git Bash: Lo pueden utilizar usuarios de todos los sistemas operativos. Todos los comandos relacionados con Django y los comandos Unix se realizan a través de él. Para descargar el Git bash: Haz clic en mí.
  2. Text-Editor: Se puede utilizar cualquier editor de texto, como Sublime Text o Visual Studio Code. Para el siguiente proyecto se utiliza Sublime Text.
  3. Python 3: La última versión de Python puede descargarse en Descargar Python.

Nota: Puedes seguir fácilmente este tutorial si tienes nociones básicas de Python y conoces los bucles, funciones, clases, etc., y algunos conocimientos de bash o línea de comandos.

Entorno virtual

El Entorno Virtual actúa como dependencias de los proyectos relacionados con Python. Funciona como un contenedor autónomo o un entorno aislado donde se instalan todos los paquetes relacionados con Python y las versiones necesarias relacionadas con un proyecto concreto. Dado que las nuevas versiones de Python, Django, o paquetes, etc. se irán desplegando, con la ayuda de un Entorno Virtual, puedes trabajar con versiones anteriores que sean específicas para tu proyecto. En resumen, puedes iniciar un proyecto independiente relacionado con Django de la versión 2.0, mientras que otro proyecto independiente relacionado con Django de la versión 3.0 puede iniciarse en el mismo ordenador.

Nota: Hay muchas formas de crear un Entorno Virtual, pero a continuación se muestra sólo una de ellas.

Pasos para crear un entorno virtual

  1. Puedes crear el nuevo directorio llamado 'proyecto-blog' utilizando el comando 'mkdir' en tu Escritorio.
  2. Cambia el directorio a 'proyecto-blog' utilizando el comando 'cd'.
    Pasos para crear un entorno virtual

  3. El entorno virtual se crea utilizando 'python -m venv env', donde env es nuestro entorno virtual mostrado por el comando 'ls'.
    Pasos para crear un entorno virtual

  4. Para Activar tu Entorno Virtual: El Entorno Virtual se puede activar utilizando el comando "fuente", donde hay que habilitar o activar la carpeta "Scripts".
    Pasos para crear un Entorno
    Se mostrará "env" entre paréntesis si has activado correctamente tu Entorno Virtual.

  5. Instalación de Django: Puedes utilizar 'pip install django' para instalar Django en tu Entorno Virtual específico.
    Pasos para crear un Entorno Virtual

Nota: Los usuarios de Linux y Mac necesitan utilizar "python3" específicamente en el comando porque Python de la versión 2 ya está preinstalado en su ordenador. Además, es preferible utilizar la versión 3 a partir de ahora, ya que Python ya no admite la versión 2 después del año 2020.

Crear un proyecto Django

  1. El primer paso es crear tu proyecto utilizando el comando 'django-admin startproject project_name', donde 'nombre_proyecto' es 'django_blog' en tu caso. Además, generará un montón de archivos dentro de nuestro proyecto recién creado, que puedes investigar más a fondo en la documentación de Django si es necesario.
    Crear un proyecto Django
  2. Cambia el directorio al proyecto recién creado utilizando el comando 'cd' y para ver el archivo creado utiliza el comando 'ls'.
    Crear un proyecto Django
  3. Puedes ejecutar tu proyecto utilizando 'python manage.py runserver'.
    Crear un proyecto Django
  4. Puedes ver el proyecto en tu navegador favorito (Google Chrome, Mozilla Firefox, etc.). Puedes entrar en tu navegador y escribir "localhost:8000" o "127.0.0.1:8000" en la URL, como se muestra a continuación.
    Crear un proyecto Django
    Nota: Para obtener la misma página que arriba, el servidor en el bash tiene que estar ejecutándose en segundo plano. También puedes detener manualmente el servidor si es necesario pulsando "Ctr+C" en Windows/Linux y "Cmd+C" en Mac.

Iniciar el nuevo proyecto Django

Para crear un nuevo proyecto en Django, siempre es un proceso de dos pasos, que se muestra a continuación.

  1. El primer paso es crear una aplicación utilizando el comando 'python manage.py startapp app_name', donde app_name es 'blog' en tu caso. En Django, hay muchas aplicaciones para un único proyecto, donde cada aplicación sirve como una funcionalidad única y específica para el proyecto en particular.
    Iniciar un nuevo proyecto
  2. El segundo paso es hacer que nuestro proyecto se entere de nuestra app recién creada haciendo cambios en la sección INSTALLED_APP de 'django_blog/settings.py'.
    Iniciar el nuevo proyecto

Cambios en nuestros modelos

Django utiliza 'SQLite' como base de datos por defecto, que es ligera y sólo se utiliza para proyectos pequeños, lo que está bien para este proyecto. Utiliza 'Object Relational Mapper(ORM)' que facilita mucho el trabajo con la base de datos. El código real de la base de datos no se escribe, mientras que las tablas de la base de datos se crean con la ayuda de la palabra clave "class" en "models.py".

Dentro de 'blog/models.py', tienes que crear un nuevo modelo llamado 'Post'. Se trata de una clase que después se convertirá en una tabla de la base de datos y que actualmente hereda de 'models.Model'. Como en un blog estándar, un determinado 'Post' contiene un título, que será un campo llamado CharField. Es una columna basada en texto y acepta como argumento obligatorio "max_length", que resulta ser 50 en tu caso. Además, hay otro campo llamado 'contenido', que es el TextField, que contiene el texto detallado del 'Post' como en un blog estándar. Se define el método doble guión bajo('str'), que anula el campo 'título' y devuelve el nombre del 'título' real en lugar de algunos objetos.
Cambiando en nuestros Modelos

Hacer una migración

'python manage.py makemigrations' es un proceso de primer paso que lee el 'models.py' tras su creación. Crea una nueva carpeta llamada 'migraciones' donde hay un archivo llamado '0001_initial.py', que son portables a través de la base de datos.
Cambiando en nuestros Modelos

Migrar a la base de datos

Este es el segundo paso, en el que 'python manage.py migrate' lee la carpeta recién creada 'migrations' y crea la base de datos, y la evoluciona cuando se produce un cambio en el modelo.
Cambios en nuestros modelos

Registrarse en el admin

Vayamos a 'blog/admin.py' y hagamos una importación de los modelos llamados 'Post' utilizando 'from .models import Post'. Para registrar modelos en el admin, el comando es 'admin.site.register(Post)'.


Cambios en nuestros modelos

Creación de SuperUser y Visualización en el panel de Administración

Necesitas crear un SuperUsuario antes de acceder al panel "admin". Para ello, utiliza 'winpty python manage.py createsuperuser'.
Cambiando en nuestros Modelos
Nota: winpty es un comando específico de bashque se utiliza para comunicarse con los Programas de Consola de Windows.

Ejecuta tu servidor en segundo plano en bash mediante el comando python manage.py runserver. Dirígete al navegador y escribe lo siguiente en la URL.

Rellena después tus datos, es decir, el nombre de usuario y la contraseña que has creado antes:
Cambiando en nuestros Modelos
Visualiza después tu panel de administración con nuestros modelos 'Post' recién creados.
Cambiando en nuestros Modelos
Cambia el contenido del 'Post' haciendo clic en el botón 'Añadir'. Rellena la información y "Guarda" el detalle.
Cambiar en nuestros Modelos

Cambio en vistas y urls

Desplázate a 'blog/views.py' y realiza los cambios que se muestran a continuación. Añade la función 'blog_list', que recibe la petición. Se realiza una consulta que obtiene todos los objetos creados mediante 'Post.objects.all()' y los guarda en el post. Hay un diccionario recién creado como 'contexto' donde se puede pasar el objeto como clave y obtenerlo a través de la plantilla 'blog-list.html', lo que se hace devolviendo la respuesta con la ayuda de render.
Cambios en views y urls
Crea un nuevo archivo llamado 'urls.py' en 'django_blog/blog' y añade los siguientes cambios. Hay una importación relativa a las vistas 'blog_list' también una 'urlpatterns', que es una lista de la ruta a una página concreta del sitio web. Actualmente, la <b'ruta' contiene la cadena vacía y el nombre de la vista.
Cambiando en views y urls
Vamos a 'django_blog/urls.py' e importamos include y hacemos un cambio en 'urlpatterns'. A continuación, añade la ruta a las URL de tu aplicación mediante include. Además, cuando los usuarios se dirigen a través de 'posts/' entonces, se dirige a nuestro 'blog.urls'.

Hacer y cambiar las plantillas

Vamos a crear una carpeta de plantillas que generalmente contiene el 'HTML' y contiene su propio lenguaje de plantillas llamado ' Jinja2'.La carpeta debe llamarse 'templates/blog/blog_list.html', que es la convención.
Cómo hacer y cambiar las plantillas
A continuación puedes ver la sintaxis relacionada con el 'HyperTextMarkup Language(HTML) donde 'h1' para el titular grande y una lista desordenada(ul) con el elemento de lista li. Además, se utiliza la sintaxis de bucle 'for' relacionada con 'Jinja 2' donde se itera sobre un objeto llamado 'blog_list' pasado como clave desde 'blog/views.py' con cada elemento llamado 'list'.
Creación y modificación de las plantillas
Visualiza el "título" denominado "Primera publicación" en la página web.
Hacer y cambiar las plantillas
Vamos a añadir otra información desde el panel de administración igual que la anterior y nombrar el título de tu segundo post como 'Segundo Post'.
Hacer y cambiar las plantillas
Después de añadir la información y recargar la página de inicio, la información se actualizará.
Crear y modificar las plantillas

Detalles de cada puesto individual

Crearás cada página individual con información sobre el título del post y su contenido. La 'url' será "localhost:8000/posts/'id'" donde id indica el número único o clave primaria adjunta a cada 'Post' dada por el propio Django.
Vamos a crear una función como 'blog_detail' en 'blog/view.py' , que acepta id como parámetro. Además, hay una consulta hecha para obtener sólo un id específico y guardarlo en 'each_post'. Del mismo modo que en el caso anterior, la información necesaria se pasa como contexto al "blog_detail.html".
Detalles de cada entrada individual
Se cambia la url en 'blog/urls.py' donde path contiene el '', que acepta el id único en forma de entero. Supongamos que el usuario llega a 'posts/' y entonces ve todos los posts, pero cuando llega a 'posts/1', sólo ve la información relativa al primer post creado.
Detalles de cada entrada individual
Vamos a crear un nuevo archivo, 'blog/blog_detail.html', y a realizar los siguientes cambios. Como blog_detail se pasa como contexto, se puede acceder al "título" y al "contenido" utilizando la notación de puntos.
Detalles de cada entrada individual
Dirígete a la URL de tu navegador y escribe lo mismo para obtener entradas individuales. Puesto que el "id" de la primera información creada es "1", la segunda información debe ser "2" y así sucesivamente para las nuevas informaciones creadas.
Detalles de cada puesto individual

Borrar la publicación

Definamos el blog_delete, que recibe la petición y el id. Además, se realiza una consulta donde 'Post.objects.get(id=id)' obtiene el objeto con un id único y lo guarda en each_post. Después se llama a 'each_post.delete()' para borrar el 'Post'.Finalmente se importa HttpResponseRedirect desde el módulo 'django.http' donde se utiliza para redirigir la página al '/posts/'
Borrar el Post
. En 'urls.py' importa 'blog_delete' y la ruta se establece en '<id>/delete' donde el id con delete al final eliminará ese objeto o información en concreto.
Borrar el Post
Vamos a borrar nuestro post escribiendo lo siguiente en el 'urls.py'.
Borrar el Post
Por fin, la página se redirige a '/posts' cuando se llama a 'posts/1/delete/' donde sólo existe un post en la página de inicio.
Borrar la entrada

Conclusión

¡Enhorabuena por terminar el tutorial! Has aprendido los fundamentos del Desarrollo Web Django y conoces la funcionalidad CRUD. Además, para obtener más detalles sobre un tema concreto, consulta la Documentación de Django.

Referencias:

Preguntas frecuentes sobre el desarrollo web Django en Python

¿Qué es Django?

Django es un framework web gratuito y de código abierto escrito en Python que sigue el patrón arquitectónico modelo-plantilla-vista. Está diseñado para ayudar a los desarrolladores a llevar las aplicaciones desde el concepto hasta su finalización lo más rápidamente posible.

¿Cuáles son algunas características de Django?

Algunas características de Django incluyen un diseño ligero y modular, un potente ORM (Object-Relational Mapper) que simplifica las interacciones con la base de datos, y soporte integrado para tareas comunes de desarrollo web, como la autenticación y gestión de usuarios, el manejo de formularios y la administración de contenidos.

¿Cómo empiezo con Django?

Para empezar con Django, necesitarás instalar Python y la biblioteca Django en tu máquina. A continuación, puedes crear un nuevo proyecto Django utilizando el comando django-admin startproject y empezar a construir tu aplicación utilizando las funciones y herramientas incorporadas de Django.

¿Cómo creo una base de datos en Django?

Django utiliza por defecto el motor de base de datos SQLite, que se incluye con Python. Puedes crear una nueva base de datos definiendo modelos en tu aplicación Django y ejecutando el comando migrate. Esto creará las tablas necesarias en la base de datos para almacenar los datos de tus modelos.

¿Cómo puedo crear vistas y plantillas en Django?

En Django, las vistas son funciones que gestionan peticiones HTTP y devuelven respuestas HTTP. Puedes crear vistas definiendo funciones en tu aplicación Django que reciban una petición y devuelvan una respuesta. Las plantillas son archivos HTML que contienen marcadores de posición para contenido dinámico. Puedes utilizar el lenguaje de plantillas de Django para insertar contenido dinámico en las plantillas y renderizarlo en tus vistas.

¿Cómo despliego una aplicación Django?

Hay varias formas de desplegar una aplicación Django, dependiendo de tus necesidades y preferencias de alojamiento. Algunas opciones comunes incluyen el despliegue en una plataforma en la nube como Heroku o AWS, utilizando un servidor web como Apache o Nginx, o utilizando un servicio de alojamiento como PythonAnywhere o DigitalOcean.

Temas

Cursos de Python

curso

Introduction to Python

4 hr
6M
Master the basics of data analysis with Python in just four hours. This online course will introduce the Python interface and explore popular packages.
Ver detallesRight Arrow
Comienza El Curso
Ver másRight Arrow
Relacionado

blog

Cómo aprender Python desde cero en 2024: Guía del experto

Descubre cómo aprender Python, sus aplicaciones y la demanda de conocimientos de Python. Comienza hoy tu andadura en Python ​con nuestra guía completa.

Matt Crabtree

19 min

tutorial

Desarrollo de backend en Python: Guía completa para principiantes

Esta completa guía te enseña los fundamentos del desarrollo backend en Python. Aprende conceptos básicos, marcos de trabajo y buenas prácticas para empezar a crear aplicaciones web.
Oluseye Jeremiah's photo

Oluseye Jeremiah

26 min

tutorial

APIs Web, Peticiones en Python y Realización de una Petición HTTP en el Tutorial de Python

Conoce los fundamentos de HTTP y también la biblioteca de peticiones en Python para realizar distintos tipos de peticiones.
Kurtis Pykes 's photo

Kurtis Pykes

15 min

tutorial

Tutorial de SQLAlchemy con ejemplos

Aprende a acceder y ejecutar consultas SQL en todo tipo de bases de datos relacionales utilizando objetos Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

tutorial

Tutorial de FastAPI: Introducción al uso de FastAPI

Explore el marco FastAPI y descubra cómo puede utilizarlo para crear API en Python.
Moez Ali's photo

Moez Ali

13 min

tutorial

21 herramientas esenciales de Python

Conozca las herramientas esenciales de Python para el desarrollo de software, raspado y desarrollo web, análisis y visualización de datos y aprendizaje automático.
Abid Ali Awan's photo

Abid Ali Awan

6 min

See MoreSee More