Eliminar vista: vistas basadas en funciones Django

Eliminar vista se refiere a una vista (lógica) para eliminar una instancia particular de una tabla de la base de datos. Se utiliza para eliminar entradas en la base de datos, por ejemplo, eliminando un artículo en geeksforgeeks. Por lo tanto, la vista Eliminar debe mostrar un mensaje de confirmación al usuario y debe eliminar la instancia automáticamente. Django brinda un soporte extraordinario para Eliminar vistas, pero veamos cómo se hace manualmente a través de una vista basada en funciones. Este artículo gira en torno a la vista Eliminar, que involucra conceptos tales como formularios de Django, modelos de Django . 

Para Eliminar vista, necesitamos un proyecto con algunos modelos y múltiples instancias que podamos usar para eliminar.

Vista de eliminación de Django: vistas basadas en funciones

Ilustración de cómo crear y usar la vista Eliminar usando un ejemplo. Considere un proyecto llamado geeksforgeeks que tenga una aplicación llamada geeks. 

Consulte los siguientes artículos para comprobar cómo crear un proyecto y una aplicación en Django. 

Después de tener un proyecto y una aplicación, creemos un modelo del cual crearemos instancias a través de nuestra vista. En geeks/models.py,  

Python3

# import the standard Django Model
# from built-in library
from django.db import models
  
# declare a new model with a name "GeeksModel"
class GeeksModel(models.Model):
 
    # fields of the model
    title = models.CharField(max_length = 200)
    description = models.TextField()
 
    # renames the instances of the model
    # with their title name
    def __str__(self):
        return self.title

Después de crear este modelo, necesitamos ejecutar dos comandos para crear la base de datos para el mismo. 

Python manage.py makemigrations
Python manage.py migrate

Ahora vamos a crear algunas instancias de este modelo usando shell, ejecute form bash, 

Python manage.py shell

Ingrese los siguientes comandos 

>>> from geeks.models import GeeksModel
>>> GeeksModel.objects.create(
                       title="title1",
                       description="description1").save()
>>> GeeksModel.objects.create(
                       title="title2",
                       description="description2").save()
>>> GeeksModel.objects.create(
                       title="title2",
                       description="description2").save()

Ahora tenemos todo listo para el back-end. Verifique que las instancias se hayan creado desde http://localhost:8000/admin/geeks/geeksmodel/ 

django-Updateview-check-models-instances

Ahora vamos a crear primero nuestra vista de eliminación, en geeks/views.py 

Python3

from django.shortcuts import (get_object_or_404,
                              render,
                              HttpResponseRedirect)
 
from .models import GeeksModel
 
 
# delete view for details
def delete_view(request, id):
    # dictionary for initial data with
    # field names as keys
    context ={}
 
    # fetch the object related to passed id
    obj = get_object_or_404(GeeksModel, id = id)
 
 
    if request.method =="POST":
        # delete object
        obj.delete()
        # after deleting redirect to
        # home page
        return HttpResponseRedirect("/")
 
    return render(request, "delete_view.html", context)

Ahora una URL asignada a esta vista con una expresión regular de id, 
en geeks/urls.py 

Python3

from django.urls import path
 
# importing views from views..py
from .views import delete_view
urlpatterns = [
    path('<id>/delete', delete_view ),
]

La plantilla para la vista de eliminación incluye un formulario simple que confirma si el usuario desea eliminar la instancia o no. En geeks/templates/delete_view.html, 

HTML

<div class="main">
    <!-- Create a Form -->
    <form method="POST">
        <!-- Security token by Django -->
        {% csrf_token %}
        Are you want to delete this item ?
        <input type="submit" value="Yes" />
        <a href="/">Cancel </a>
    </form>
</div>

Todo listo, ahora vamos a comprobar si funciona o no, visita http://localhost:8000/2/delete 

django-delete-view

Verifiquemos si la instancia ha sido eliminada o no, 

django-deleteview-

Uno puede implementar esta vista de cualquier manera según el requisito usando la función obj.delete() .
 

Publicación traducida automáticamente

Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *