Бесплатные курсы структурированной веб-разработки
Теперь, когда у нас установлены сериализаторы, мы можем работать над некоторыми базовыми представлениями. Сначала мы рассмотрим представления функций. Как только мы это поймем, мы будем работать над использованием представлений классов, которые сделают многое из этого за нас.
Основы представлений функций
Нам нужно определить пару вещей, чтобы создать представление функции. Прежде всего, это функция. Это будет обычная функция Python с одним параметром с именем request, который выглядит так:
def hello_world(request): # logic goes here pass
Теперь, когда у нас есть функция, нам нужно добавить декоратор. Декоратор — это специфичная для Python концепция, которая позволяет нам добавлять дополнительные функции к нашей функции. Эти декораторы встроены в Django Rest Framework. Мы добавляем декоратор в Python, используя ключевое слово @. Вот пример, который возвращает ответ, используя встроенный объект Response в Django.
from rest_framework.decorators import api_view from rest_framework.response import Response @api_view([‘GET’, ‘POST’]) def hello_world(request): return Response({‘message’: ‘hello world’})
Вы заметите, что мы передали параметр декоратору api_view. Это будет список всех разрешенных методов HTTP. В нашем случае мы разрешаем получать и отправлять запросы. Это все, что требуется для написания представления функции в Django Rest Framework. Но что, если вы хотите обрабатывать почтовые запросы по-другому? Давайте займемся этим сейчас.
Как обрабатывать почтовые запросы
В приведенном выше примере у нас одинаковая логика как для отправки, так и для получения запросов. Скорее всего, вы захотите, чтобы для каждого запроса выполнялись отдельные действия. К счастью, в этом нам может помочь объект запроса, который мы передали в нашу функцию. Взгляните на пример ниже:
from rest_framework.decorators import api_view from rest_framework.response import Response @api_view(['GET', 'POST']) def hello_world(request): if request.method == 'POST': return Response({'message': 'Got some data: ' + str(request.data)}) return Response({'message': 'hello world'})
Мы можем получить request.method, чтобы получить строку, которая будет соответствовать имени метода HTTP, в этом случае мы ищем строку, которая соответствует «POST». Затем мы возвращаем ответ, но вы заметите, что мы используем request.data в этом ответе. Он будет содержать данные внутри тела сообщения из запроса. Таким образом, мы можем получить данные, отправленные пользователем, и что-то с ними сделать. Это всего лишь простой пример, поэтому мы просто возвращаем эти данные обратно, чтобы показать, как все это работает.
Это охватывает основные понятия для создания функционального представления. Есть и другие способы продолжать добавлять к этому больше, и есть другие декораторы, которые мы могли бы добавить. К ним относятся декораторы для разрешений, регулирования и схемы, но мы не будем вдаваться в них здесь. Мы позаботимся о том, чтобы добавить их, когда доберемся до представлений классов. Мы рассмотрим другой способ добавления этой функциональности в наше представление. Если вы хотите продолжить расширение этого представления функций, документация поможет вам в этом. В следующем уроке мы начнем работать с представлениями классов.