Django CRUD (Crear, Recuperar, Actualizar, Eliminar) Vistas basadas en funciones

Django es un marco web basado en Python que le permite crear rápidamente una aplicación web sin todos los problemas de instalación o dependencia que normalmente encontrará con otros marcos. Django se basa en la arquitectura MVT (Plantilla de vista de modelo) y gira en torno a las operaciones CRUD (Crear, Recuperar, Actualizar, Eliminar). CRUD se puede explicar mejor como un enfoque para construir una aplicación web Django. En general, CRUD significa realizar operaciones de creación, recuperación, actualización y eliminación en una tabla de una base de datos. Analicemos lo que realmente significa CRUD,
 

Untitled-Diagram-316

Crear : cree o agregue nuevas entradas en una tabla en la base de datos. 
Recuperar : lea, recupere, busque o vea las entradas existentes como una lista (Vista de lista) o recupere una entrada en particular en detalle (Vista detallada) 
Actualizar : actualice o edite las entradas existentes en una tabla en la base de datos 
Eliminar : elimine, desactive o eliminar entradas existentes en una tabla en la base de datos
 

Django CRUD (Crear, Recuperar, Actualizar, Eliminar) Vistas basadas en funciones

Ilustración de cómo crear y usar una vista CRUD 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 crearemos un Django ModelForm para este modelo. Consulte este artículo para obtener más información sobre modelform – Django ModelForm – Crear formulario a partir de modelos . crear un archivo forms.py en la carpeta geeks, 
 

Python3

from django import forms
from .models import GeeksModel
 
 
# creating a form
class GeeksForm(forms.ModelForm):
 
    # create meta class
    class Meta:
        # specify model to be used
        model = GeeksModel
 
        # specify fields to be used
        fields = [
            "title",
            "description",
        ]

Crear vista

Crear vista se refiere a una vista (lógica) para crear una instancia de una tabla en la base de datos. Es como tomar una entrada de un usuario y almacenarla en una tabla específica. 
En geeks/views.py, 
 

Python3

from django.shortcuts import render
 
# relative import of forms
from .models import GeeksModel
from .forms import GeeksForm
 
 
def create_view(request):
    # dictionary for initial data with
    # field names as keys
    context ={}
 
    # add the dictionary during initialization
    form = GeeksForm(request.POST or None)
    if form.is_valid():
        form.save()
         
    context['form']= form
    return render(request, "create_view.html", context)

Cree una plantilla en templates/create_view.html, 
 

html

<form method="POST" enctype="multipart/form-data">
 
    <!-- Security token -->
    {% csrf_token %}
 
    <!-- Using the formset -->
    {{ form.as_p }}
     
    <input type="submit" value="Submit">
</form>

Ahora visite http://localhost:8000/ 
 

django-create-view-function-based

Para verificar la implementación completa de Create View basada en funciones, visite Create View – Function based Views Django .
 

Recuperar vista

La vista de recuperación se divide básicamente en dos tipos de vistas, Vista detallada y Vista de lista. 
 

Vista de la lista

Vista de lista se refiere a una vista (lógica) para enumerar todas las instancias de una tabla de la base de datos o en particular en un orden particular. Se utiliza para mostrar múltiples tipos de datos en una sola página o vista, por ejemplo, productos en una página de comercio electrónico. 
En geeks/views.py, 
 

Python3

from django.shortcuts import render
 
# relative import of forms
from .models import GeeksModel
 
 
def list_view(request):
    # dictionary for initial data with
    # field names as keys
    context ={}
 
    # add the dictionary during initialization
    context["dataset"] = GeeksModel.objects.all()
         
    return render(request, "list_view.html", context)

Cree una plantilla en templates/list_view.html, 
 

html

<div class="main">
 
    {% for data in dataset %}.
 
    {{ data.title }}<br/>
    {{ data.description }}<br/>
    <hr/>
 
    {% endfor %}
 
</div>

Ahora visite http://localhost:8000/ 
 

django-listview-function-based

Para verificar la implementación completa de la Vista de lista basada en funciones, visite Vista de lista – Vistas basadas en funciones Django 
 

Vista de detalles

Vista detallada se refiere a una vista (lógica) para mostrar una instancia particular de una tabla de la base de datos con todos los detalles necesarios. Se utiliza para mostrar múltiples tipos de datos en una sola página o vista, por ejemplo, el perfil de un usuario. 
En geeks/views.py, 
 

Python3

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

Vamos a crear una vista y una plantilla para el mismo. En geeks/views.py,
 

Python3

from django.shortcuts import render
 
# relative import of forms
from .models import GeeksModel
 
# pass id attribute from urls
def detail_view(request, id):
    # dictionary for initial data with
    # field names as keys
    context ={}
 
    # add the dictionary during initialization
    context["data"] = GeeksModel.objects.get(id = id)
         
    return render(request, "detail_view.html", context)

Cree una plantilla en templates/Detail_view.html, 
 

html

<div class="main">
     
    <!-- Specify fields to be displayed -->
    {{ data.title }}<br/>
    {{ data.description }}<br/>
 
</div>

Veamos qué hay en http://localhost:8000/1 
 

django-detail-view-demo1

Para verificar la implementación completa de la Vista detallada basada en funciones, visite Vista detallada – Vistas basadas en funciones Django
 

Actualizar vista

Actualizar vista se refiere a una vista (lógica) para actualizar una instancia particular de una tabla de la base de datos con algunos detalles adicionales. Se utiliza para actualizar entradas en la base de datos, por ejemplo, actualizando un artículo en geeksforgeeks. 
En geeks/views.py,
 

Python3

from django.shortcuts import (get_object_or_404,
                              render,
                              HttpResponseRedirect)
 
# relative import of forms
from .models import GeeksModel
from .forms import GeeksForm
 
# after updating it will redirect to detail_View
def detail_view(request, id):
    # dictionary for initial data with
    # field names as keys
    context ={}
  
    # add the dictionary during initialization
    context["data"] = GeeksModel.objects.get(id = id)
          
    return render(request, "detail_view.html", context)
 
# update view for details
def update_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)
 
    # pass the object as instance in form
    form = GeeksForm(request.POST or None, instance = obj)
 
    # save the data from the form and
    # redirect to detail_view
    if form.is_valid():
        form.save()
        return HttpResponseRedirect("/"+id)
 
    # add form dictionary to context
    context["form"] = form
 
    return render(request, "update_view.html", context)

Ahora cree las siguientes plantillas en la carpeta de plantillas, 
en geeks/templates/update_view.html,
 

html

<div class="main">
    <!-- Create a Form -->
    <form method="POST">
        <!-- Security token by Django -->
        {% csrf_token %}
 
        <!-- form as paragraph -->
        {{ form.as_p }}
 
        <input type="submit" value="Update">
    </form>
 
</div>

En geeks/templates/detail_view.html, 
 

html

<div class="main">
    <!-- Display attributes of instance -->
    {{ data.title }} <br/>
    {{ data.description }}
</div>

Verifiquemos si todo funciona, visite http://localhost:8000/1/update
 

django-update-view-

Para verificar la implementación completa de la vista de actualización basada en funciones, visite Vista de actualización: vistas basadas en funciones Django
 

Eliminar vista

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. 
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

Para verificar la implementación completa de Vista de eliminación basada en funciones, visite Vista de eliminación – Vistas basadas en funciones Django
 

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 *