Создание наборов представлений и маршрутизаторов
ViewSets позволяет определить взаимодействие API-интерфейса и позволить REST Framework динамически создавать URL-адреса с помощью объекта Router. С помощью наборов представлений можно избежать повторения логики для нескольких представлений. Наборы представлений включают действия для типовых операций создания, извлечения, обновления, удаления - list(), create(), retrieve(), update(), partial_update() и destroy().
Создадим набор представлений для модели Course. Измените файл api/views.py и добавьте в него следующий код:
from rest_framework import viewsets
from .serializers import CourseSerializer
class CourseViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Course.objects.all()
serializer_class = CourseSerializer
Подкласс ReadOnlyModelViewSet, который предоставляет действия только для чтения list() и retrieve() для обоих объектов list или извлекает один объект. Отредактируйте api/urls.py и создайте маршрутизатор для нашего представления:
from django.conf.urls import url, include
from rest_framework import routers
from . import views
router = routers.DefaultRouter()
router.register('courses', views.CourseViewSet)
urlpatterns = [
# ...
url(r'^', include(router.urls)),
]
Мы создаем объект DefaultRouter и регистрируем наш набор представлений с префиксом courses. Маршрутизатор берет на себя ответственность за создание URL-адресов автоматически для нашего набора представлений.
Откройте в своем браузере http://127.0.0.1:8000/api/ .Вы увидите, что маршрутизатор перечисляет все наборы представлений в своем базовом URL-адресе, как показано на следующем снимке экрана:
Вы можете перейти http://127.0.0.1:8000/api/courses/ , чтобы получить список курсов.
Здесь можно получить дополнительные сведения о наборах представлений: http://www.django-rest-framework.org/api-guide/viewsets/
Также можно найти дополнительные сведения о маршрутизаторах здесь: http://www.django-rest-framework.org/api-guide/routers/