DeleteView - представления на основе классов Django

Опубликовано: 24 Февраля, 2022

Удалить представление относится к представлению (логике) для удаления определенного экземпляра таблицы из базы данных. Он используется для удаления записей в базе данных, например, при удалении статьи на geeksforgeeks. Мы уже обсудили основы удаления представления в представлении удаления - представлений на основе функций Django. Представления на основе классов предоставляют альтернативный способ реализации представлений как объектов Python вместо функций. Они не заменяют функциональные представления, но имеют определенные отличия и преимущества по сравнению с функциональными представлениями:

  • Организация кода, связанного с конкретными методами HTTP (GET, POST и т. Д.), Может быть решена отдельными методами вместо условного перехода.
  • Объектно-ориентированные методы, такие как миксины (множественное наследование), могут использоваться для разделения кода на повторно используемые компоненты.

Представлениями на основе классов проще и эффективнее управлять, чем представлениями на основе функций. Представление на основе функций с множеством строк кода может быть преобразовано в представления на основе классов всего несколькими строками. Именно здесь вступает в силу объектно-ориентированное программирование.

Django DeleteView - представления на основе классов

Иллюстрация того, как создать и использовать DeleteView на примере. Рассмотрим проект под названием geeksforgeeks, в котором есть приложение под названием geeks.

Refer to the following articles to check how to create a project and an app in Django. 
 

  • How to Create a Basic Project using MVT in Django?
  • How to Create an App in Django ?

После того, как у вас есть проект и приложение, давайте создадим модель, экземпляры которой мы будем создавать с помощью нашего представления. В 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

После создания этой модели нам нужно запустить две команды, чтобы создать для нее базу данных.

 Python manage.py makemigrations
Python manage.py migrate

Теперь давайте создадим несколько экземпляров этой модели с помощью оболочки, запустим форму bash,

 Оболочка Python manage.py

Введите следующие команды

 >>> из geeks.models импортировать 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 ()

Теперь у нас все готово для бэкенда. Убедитесь, что экземпляры были созданы с http: // localhost: 8000 / admin / geeks / geeksmodel /

Class Based Views automatically setup everything from A to Z. One just needs to specify which model to create DeleteView for, then Class based DeleteViewde will automatically try to find a template in app_name/modelname_confirm_delete.html. In our case it is geeks/templates/geeks/geeksmodel_confirm_delete.html. Let’s create our class based view. In geeks/views.py, 
 

Python3

# import generic UpdateView
from django.views.generic.edit import DeleteView
 
# Relative import of GeeksModel
from .models import GeeksModel
 
class GeeksDeleteView(DeleteView):
    # specify the model you want to use
    model = GeeksModel
     
    # can specify success url
    # url to redirect after sucessfully
    # deleting object
    success_url ="/"

Теперь создайте URL-адрес для отображения представления. В geeks / urls.py,

Create a template in templates/geeks/geeksmodel_confirm_delete.html, 
 

html

<form method="post">{% csrf_token %}
     
<p>Are you sure you want to delete "{{ object }}"?</p>
 
    <input type="submit" value="Confirm">
</form>

Проверим, что есть на http: // localhost: 8000/1 / delete

Нажмите «Подтвердить», и объект будет перенаправлен на success_url, определенный в представлении. Проверим, удален ли title1 из базы данных.

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.