Logo

Creando una Aplicación CRUD Básica con Django

En este artículo, aprenderemos cómo crear una aplicación CRUD básica utilizando el framework Django. CRUD es un acrónimo que significa Create, Read, Update y Delete, y se refiere a las operaciones básicas que se pueden realizar en una base de datos.

Introducción a Django

Django es un framework de desarrollo web de alto nivel y de código abierto, escrito en Python. Proporciona una estructura y un conjunto de herramientas que permiten a los desarrolladores crear aplicaciones web de manera rápida y eficiente.

Paso 1: Configurar un entorno virtual

Antes de comenzar a trabajar en nuestra aplicación Django, es recomendable configurar un entorno virtual para evitar conflictos con otras dependencias del sistema. Para ello, podemos utilizar la herramienta virtualenv. A continuación, se muestra cómo crear y activar un entorno virtual:

$ virtualenv myenv
$ source myenv/bin/activate

Paso 2: Instalar Django

Una vez que tenemos nuestro entorno virtual activado, podemos instalar Django utilizando pip, el gestor de paquetes de Python. Ejecute el siguiente comando para instalar la última versión estable de Django:

$ pip install django

Paso 3: Crear un proyecto Django

Después de haber instalado Django, podemos crear un nuevo proyecto utilizando el siguiente comando:

$ django-admin startproject myproject

Esto creará un directorio llamado myproject con la estructura de archivos y directorios necesarios para nuestro proyecto.

Paso 4: Crear una aplicación Django

Dentro de nuestro proyecto Django, podemos crear una nueva aplicación utilizando el siguiente comando:

$ cd myproject
$ python manage.py startapp myapp

Esto creará un directorio llamado myapp dentro de nuestro proyecto, que contendrá los archivos y directorios necesarios para nuestra aplicación.

Paso 5: Definir el modelo de datos

El modelo de datos es una representación de la estructura y los campos de nuestra base de datos. En este ejemplo, crearemos un modelo de datos simple para una lista de tareas. Abra el archivo models.py dentro de la aplicación myapp y agregue el siguiente código:

from django.db import models

class Task(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField()
    completed = models.BooleanField(default=False)

    def __str__(self):
        return self.title

En este código, hemos definido un modelo Task con tres campos: title, description y completed. El campo title es de tipo CharField, que representa una cadena de texto con una longitud máxima de 200 caracteres. El campo description es de tipo TextField, que representa un campo de texto sin límite de longitud. El campo completed es de tipo BooleanField, que representa un valor booleano (verdadero o falso). Además, hemos definido un método __str__ que devuelve el título de la tarea.

Paso 6: Generar y aplicar las migraciones

Las migraciones son archivos que contienen las instrucciones necesarias para crear o modificar la estructura de la base de datos según los cambios realizados en los modelos de datos. Para generar las migraciones, ejecute el siguiente comando:

$ python manage.py makemigrations

Una vez generadas las migraciones, aplíquelas a la base de datos utilizando el siguiente comando:

$ python manage.py migrate

Esto creará las tablas necesarias en la base de datos según la estructura definida en los modelos de datos.

Paso 7: Crear las vistas

Las vistas son las funciones o clases que se encargan de procesar las solicitudes web y devolver una respuesta al cliente. En nuestro caso, crearemos cuatro vistas para realizar las operaciones CRUD básicas: listar todas las tareas, crear una nueva tarea, actualizar una tarea existente y eliminar una tarea. Abra el archivo views.py dentro de la aplicación myapp y agregue el siguiente código:

from django.shortcuts import render, redirect
from .models import Task
from .forms import TaskForm

def task_list(request):
    tasks = Task.objects.all()
    return render(request, 'myapp/task_list.html', {'tasks': tasks})

def task_create(request):
    form = TaskForm(request.POST or None)
    if form.is_valid():
        form.save()
        return redirect('task_list')
    return render(request, 'myapp/task_form.html', {'form': form})

def task_update(request, pk):
    task = Task.objects.get(pk=pk)
    form = TaskForm(request.POST or None, instance=task)
    if form.is_valid():
        form.save()
        return redirect('task_list')
    return render(request, 'myapp/task_form.html', {'form': form})

def task_delete(request, pk):
    task = Task.objects.get(pk=pk)
    if request.method == 'POST':
        task.delete()
        return redirect('task_list')
    return render(request, 'myapp/task_confirm_delete.html', {'task': task})

En este código, hemos importado el modelo Task y el formulario TaskForm definidos anteriormente. Luego, hemos creado cuatro funciones de vista: task_list para listar todas las tareas, task_create para crear una nueva tarea, task_update para actualizar una tarea existente y task_delete para eliminar una tarea.

Paso 8: Crear las plantillas HTML

Las plantillas HTML son archivos que contienen el código HTML que se utilizará para renderizar las vistas. En nuestro caso, crearemos tres plantillas: task_list.html para listar las tareas, task_form.html para crear y actualizar tareas, y task_confirm_delete.html para confirmar la eliminación de una tarea. Cree un directorio llamado templates dentro de la aplicación myapp, y dentro de ese directorio, cree otro directorio llamado myapp. A continuación, cree los archivos HTML correspondientes con el siguiente contenido:

task_list.html:

{% for task in tasks %}
    <h2>{{ task.title }}</h2>
    <p>{{ task.description }}</p>
    <p>{{ task.completed }}</p>
    <a href="{% url 'task_update' task.pk %}">Editar</a>
    <a href="{% url 'task_delete' task.pk %}">Eliminar</a>
{% empty %}
    <p>No hay tareas disponibles.</p>
{% endfor %}

task_form.html:

<form method="POST">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Guardar</button>
</form>

task_confirm_delete.html:

© Copyright 2024, todos los derechos reservados.