В чем разница между @action и @api_view для создания маршрутов в Django Rest Framework

Оба декоратора, похоже, просто создают маршрут для вас. Но в чем практическая разница (если она есть)? В документации это неясно.

Я даже создал два маршрута тем же способом, и никакой разницы не было

@action используется для того, чтобы сделать методы в существующих ViewSets routable:

Если у вас есть специальные методы, которые должны быть маршрутизируемыми, вы можете пометить их как таковые с помощью декоратора @action. как таковые с помощью декоратора @action.

@api_view "конвертирует" обычные функции представления, основанные на функциях, в представления DRF. Лучше всего это объясняется в docs:

REST фреймворк также позволяет работать с обычными представлениями, основанными на функциях представлениями. Он предоставляет набор простых декораторов, которые оборачивают ваши представления, основанные на функциях. основанные на представлениях, чтобы гарантировать, что они получают экземпляр Request (а не обычный Django HttpRequest) и позволяет им возвращать Response (вместо Django HttpResponse), и позволяет вам настраивать то, как запрос обрабатывается. Ядром этой функциональности является декоратор api_view, который принимает список методов HTTP, на которые должно отвечать ваше представление.

Вернуться на верх