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

Атрибут method

Атрибут method объекта HttpRequest возвращает строку, представляющую HTTP-метод, с которым был сделан запрос. Доступные значения: 'GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS', 'PATCH' и другие. Этот атрибут всегда возвращает строку в верхнем регистре, что удобно для проверки типа запроса в представлениях.

Атрибут не принимает никаких параметров и доступен только для чтения. Его основное назначение - определение типа запроса для выбора соответствующей логики обработки в представлениях. Это критически важно для REST API, обработки форм и реализации CRUD-операций.

Синтаксис

request.method

Пример

Проверим, является ли запрос GET-запросом, и обработаем его соответствующим образом:

from django.http import HttpResponse from django.shortcuts import render def my_view(request): if request.method == 'GET': return HttpResponse("Это GET-запрос") return HttpResponse("Другой тип запроса")

Пример

Обработаем POST-запрос с данными формы:

from django.http import HttpResponse from django.shortcuts import render def form_handler(request): if request.method == 'POST': name = request.POST.get('name', '') return HttpResponse(f"Привет, {name}!") return render(request, 'form.html')

Пример

Реализуем обработку разных HTTP-методов в одном представлении:

from django.http import JsonResponse from django.shortcuts import get_object_or_404 from myapp.models import Article def article_api(request, pk): article = get_object_or_404(Article, pk=pk) if request.method == 'GET': data = {'title': article.title, 'status': article.status} return JsonResponse(data) elif request.method == 'PUT': # обработка PUT-запроса return JsonResponse({'message': 'Обновлено'}) elif request.method == 'DELETE': article.delete() return JsonResponse({'message': 'Удалено'}) return JsonResponse({'error': 'Метод не разрешен'}, status=405)

Пример

Проверим метод запроса в классе-представлении:

from django.views import View from django.http import HttpResponse class MyView(View): def dispatch(self, request, *args, **kwargs): if request.method in ['PUT', 'PATCH']: return HttpResponse("Метод PUT или PATCH") return super().dispatch(request, *args, **kwargs) def get(self, request): return HttpResponse("GET-запрос") def post(self, request): return HttpResponse("POST-запрос")

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

  • атрибут GET,
    который содержит GET-параметры запроса
  • атрибут POST,
    который содержит POST-данные запроса
  • атрибут META,
    который содержит метаданные запроса
  • декоратор require_GET,
    который ограничивает доступ только для GET-запросов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить