РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
787 of 818 menu

Метод delete

Метод delete класса Client предназначен для выполнения DELETE-запросов к представлениям в тестовой среде Django. Он имитирует HTTP DELETE-запрос, который обычно используется для удаления ресурсов на сервере. Метод принимает обязательный аргумент path - URL-адрес представления, а также дополнительные параметры для передачи данных, заголовков и настройки запроса. Возвращает объект Response, который можно использовать для проверки статуса ответа и содержимого.

Синтаксис

client.delete(path, data=None, content_type='application/octet-stream', follow=False, secure=False, **extra)

Параметры

Метод delete принимает следующие параметры:

path - URL-адрес представления (обязательный параметр) data - словарь или строка с данными для отправки в теле запроса content_type - MIME-тип содержимого (по умолчанию 'application/octet-stream') follow - если True, клиент будет следовать за редиректами secure - если True, запрос будет считаться защищённым (HTTPS) **extra - дополнительные заголовки или параметры запроса

Возвращает объект Response, содержащий информацию о результате запроса.

Пример . Использование с простым представлением

Рассмотрим пример тестирования представления, которое удаляет статью по её идентификатору:

from django.test import Client, TestCase from myapp.models import Article class ArticleDeleteTest(TestCase): def setUp(self): self.client = Client() self.article = Article.objects.create( title="Test Article", content="Test content" ) def test_delete_article(self): response = self.client.delete(f'/articles/{self.article.id}/delete/') self.assertEqual(response.status_code, 302) self.assertFalse(Article.objects.filter(id=self.article.id).exists())

Результат выполнения кода:

"Article deleted successfully"

Пример . С передачей данных в DELETE-запросе

Иногда необходимо передать дополнительные данные в DELETE-запросе, например, для подтверждения удаления:

from django.test import Client, TestCase from myapp.models import Article class ArticleDeleteWithDataTest(TestCase): def setUp(self): self.client = Client() self.article = Article.objects.create( title="Test Article", content="Test content", status='draft' ) def test_delete_article_with_data(self): response = self.client.delete( f'/articles/{self.article.id}/delete/', data={'confirm': 'yes'}, content_type='application/x-www-form-urlencoded' ) self.assertEqual(response.status_code, 302) self.assertEqual(response.url, '/articles/')

Результат выполнения кода:

[<Article: Test Article>]

Пример . С использованием заголовков

Метод delete позволяет передавать дополнительные заголовки для аутентификации или других целей:

from django.test import Client, TestCase from myapp.models import Article class ArticleDeleteWithHeadersTest(TestCase): def setUp(self): self.client = Client() self.article = Article.objects.create( title="Test Article", content="Test content", author="John Doe" ) def test_delete_article_with_custom_headers(self): response = self.client.delete( f'/api/articles/{self.article.id}/', HTTP_X_REQUESTED_WITH='XMLHttpRequest', HTTP_AUTHORIZATION='Bearer token123' ) self.assertEqual(response.status_code, 204)

Результат выполнения кода:

"Status code: 204"

Пример . С обработкой редиректов

Параметр follow=True позволяет автоматически следовать за редиректами после DELETE-запроса:

from django.test import Client, TestCase from myapp.models import Article class ArticleDeleteFollowRedirectTest(TestCase): def setUp(self): self.client = Client() self.article = Article.objects.create( title="Test Article", content="Test content" ) def test_delete_and_follow_redirect(self): response = self.client.delete( f'/articles/{self.article.id}/delete/', follow=True ) self.assertEqual(response.status_code, 200) self.assertContains(response, "Article has been deleted")

Результат выполнения кода:

"Article has been deleted"

Смотрите также

  • метод get,
    который выполняет GET-запросы в тестовом клиенте
  • метод post,
    который выполняет POST-запросы в тестовом клиенте
  • метод patch,
    который выполняет PATCH-запросы в тестовом клиенте
  • метод login,
    который выполняет аутентификацию пользователя в тестовом клиенте
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить