Формирование list и detail views
REST Framework поставляется с набором универсальных представлений и миксинов, которые можно использовать для создания представлений API. Они предоставляют функциональные возможности для извлечения, создания, обновления или удаления объектов модели. Просмотреть все миксины и представления, предоставляемые REST Framework можно здесь: http://www.django-rest-framework.org/api-guide/generic-views/
Создадим list и detail views для извлечения объектов Subject. Создайте новый файл в каталоге courses/api/ и назовите его views.py. Добавьте в него следующий код:
from rest_framework import generics
from ..models import Subject
from .serializers import SubjectSerializer
class SubjectListView(generics.ListAPIView):
queryset = Subject.objects.all()
serializer_class = SubjectSerializer
class SubjectDetailView(generics.RetrieveAPIView):
queryset = Subject.objects.all()
serializer_class = SubjectSerializer
В этом коде используются представления ListAPIView и RetrieveAPIView платформы REST. Оба представления имеют следующие атрибуты:
queryset
: Базовый запрос, используемый для извлечения объектовserializer_class
: Класс для сериализации объектов
Давайте добавлим шаблоны URL-адресов для наших представлений. Создайте новый файл в каталоге courses/api/ и назовите его urls.py и добавьте в него следующий код:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^subjects/$', views.SubjectListView.as_view(), name='subject_list'),
url(r'^subjects/(?P<pk>\d+)/$', views.SubjectDetailView.as_view(), name='subject_detail'),
]
Отредактируйте основной файл urls.py проекта educa и включите API url-шаблоны следующим образом:
urlpatterns = [
# ...
url(r'^api/', include('courses.api.urls', namespace='api')),
]
Мы используем пространство имен api для наших API URLs. Убедитесь, что сервер разработки запущен:
python3 manage.py runserver
После чего выполните в терминале следующую команду:
curl http://127.0.0.1:8000/api/subjects/
Ответ будет выглядеть следующим образом:
[{"id":2,"title":"Mathematics","slug":"mathematics"},{"id":4,"title":"Music","slug":"music"},{"id":3,"title":"Physics","slug":"physics"},{"id":1,"title":"Programming","slug":"programming"}]
HTTP-ответ содержит список объектов Subject в формате JSON. Если у вас не установлен cURL, вы можете скачать его здесь: http://curl.haxx.se/dlwiz/. Вместо cURL можно также использовать любое другое средство для отправки пользовательских HTTP-запросов, например Postman, который можно скачать здесь: https://www.getpostman.com
Откройте в браузере http://127.0.0.1:8000/api/subjects/. Интерфейс API REST Framework выглядит следующим образом:
Этот интерфейс предоставляется визуализацией BrowsableAPIRenderer. Он отображает заголовки и содержимое результатов и позволяет выполнять запросы. Можно также получить доступ к подробному просмотру API для Subject, включив его идентификатор в URL-адрес.
Откройте в браузере http://127.0.0.1:8000/api/subjects/1/. Будет отображен один объект Subject, отображаемый в формате JSON.