En nuestro artículo anterior, cubrimos los conceptos básicos de la configuración de un proyecto Django y creamos nuestro modelo de ejercicio, que mostramos en la interfaz como una lista. En este artículo, profundizaremos en la realización de operaciones CRUD. Para aquellos que no están familiarizados, CRUD significa Crear, Leer, Actualizar y Eliminar, esencialmente las cuatro acciones fundamentales que puedes realizar con tus datos.
Ahora que tenemos nuestra API configurada en la carpeta aplicación , simplemente ampliaremos la vista de índice para manejar solicitudes de creación, actualización y eliminación.
Configuremos un formulario que permita a los usuarios crear ejercicios. Usaremos plantillas HTML para este propósito una vez más. Para comenzar, cree una nueva plantilla llamada add_exercise.html en la carpeta app/templates .
A continuación, en nuestra plantilla index.html, incluiremos la plantilla add_exercise.html usando el siguiente método:
{% extends "base.html" %} {% block content %}Exercises
{% include 'add_exercise.html' %} ... {% endblock %}
Estamos utilizando la etiqueta include aquí, que promueve la componibilidad en las plantillas HTML, lo que hace que nuestro código sea más fácil de mantener y comprender. Si actualiza la página en su navegador, debería ver aparecer el formulario en la pantalla.
En nuestro HTML, usamos la etiqueta
Estamos usando la etiqueta
Y en nuestra vista de ejercicios, haremos los siguientes cambios para diferenciar entre solicitudes.
def index(request): if request.method == 'POST': create = 'create' in request.POST update = 'update' in request.POST if create == True: models.Exercise.create(request) elif update == True: models.Exercise.update(request) return redirect('/') exercises = ( models.Exercise.objects.all().order_by("created_at") ) return render(request, "index.html", context={'exercises': exercises})
Verificamos el nombre del botón y reenviamos la solicitud al método de ejercicio apropiado en consecuencia.
Agreguemos un método de clase de actualización al modelo de ejercicio en app/models.py.
def update(request): id = request.POST.get('id') title = request.POST.get('title') date = request.POST.get('date') exercise = Exercise.objects.filter(pk=id).update(title=title, date=date) return exercise
Para actualizar una fila en la base de datos, podemos usar el método de actualización disponible en el modelo de ejercicio. Sin embargo, antes de actualizar, debemos asegurarnos de que estamos actualizando el ejercicio correcto. Para ello, filtramos los ejercicios por la clave principal, que es id, y actualizamos solo ese ejercicio específico.
Del mismo modo, agregaremos un botón de eliminación junto a cada ejercicio en la plantilla ejercicio.html.
Estableceremos eliminar como el valor del atributo de nombre y, en views.py, ampliaremos las declaraciones if...elif para manejar la operación de eliminación.
def index(request): if request.method == 'POST': create = 'create' in request.POST update = 'update' in request.POST delete = 'delete' in request.POST if create == True: models.Exercise.create(request) elif update == True: models.Exercise.update(request) elif delete == True: models.Exercise.delete(request) return redirect('/') exercises = ( models.Exercise.objects.all().order_by("created_at") ) return render(request, "index.html", context={'exercises': exercises})
Y en el modelo de ejercicio, agregaremos el método de clase eliminar.
def delete(request): id = request.POST.get('id') is_deleted = Exercise.objects.filter(pk=id).delete() if is_deleted == 1: return True return False
Con esta incorporación, hemos implementado con éxito operaciones CRUD en nuestra aplicación Python y Django.
from django.http import HttpResponseRedirect def index(request): ... return redirect('/') # or return HttpResponseRedirect(request.META['HTTP_REFERER'])
En resumen, al administrar eficazmente nuestras solicitudes POST y garantizar la redirección adecuada, podemos crear una experiencia de usuario perfecta al implementar operaciones CRUD en nuestra aplicación Django.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3