Формирование 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.

results matching ""

    No results matching ""