ViewSets
), которая позволяет разработчику сконцентрироваться на моделировании состояния и взимодействии с API, а URL адреса сформировать автоматически, основываясь на общих соглашениях.GET
или PUT
.Router
обрабатывает и создает конфигурацию URL-ов для вас. UserList
и UserDetail
в один UserViewSet
. Мы можем убрать два представления и заменить их одним классом:ReadOnlyModelViewSet
для обеспечения операций только на чтение. Мы по прежнему указываем запрос(queryset
) и класс сериализатора, точно так же, как когда писали обычные предславления, но нам больше нет необходимости дублировать эту информацию в двух разных классах.SnippetList
, SnippetDetail
и SnippetHighlight
. Мы можем убрать три представления и заменить их одним классом.ModelViewSet
для того, чтобы получить набор стандартных операций чтения и записи.@action
, чтобы создать собственную операцию, названную highlight
. Этот декоратор используется для того, чтобы создать собственные конечные точки, которых нет среди стандартных операций создания/обновления/удаления.@action
, по умолчанию обрабатывают GET
запрос. Мы можем использовать аргумент метода, если хотим, чтобы действие обрабатывало POST
запросы.url_path
как именованый аргумент декоратора.ViewSet
).snippet/urls.py
мы связываем наши классы ViewSet
в множество конкретных представлений.ViewSet
, связывая методы с требуемыми действиями для каждого представления.ViewSet
), а не обычные представления-классы, мы, вообще-то, можем не проектировать конфигурацию URL. Вся конфигурация может быть создана автоматически, используя класс Router
. Все, что нам нужно, это зарегистрировать наборы форм с префиксом, остальное маршрутизатор сделаем сам за нас.snippets/urls.py
:DefaultRouter
, который мы используем, автоматически создает корень API, так что мы можем удалить метод api_root
из модуля представлений.