Как заставить DRF использовать url-путь как пустой и базовый путь?
Я пытаюсь опустить URL-адрес для действия в наборе представлений, например
@action(detail=False, methods=['patch'], url_path='')
def update_current_user(self, request):
Но когда я задаю url_path в качестве пустой строки, DRF по умолчанию использует имя функции и ищет маршрут по адресу /api/current-user/update_current_user. Я хочу, чтобы он посмотрел на /api/current-user.
Как удалить весь путь для функции и использовать базовый путь?
Это экземпляр так называемого шаблона "Singleton Endpoint", в котором присутствует только один экземпляр ресурса - никаких списков. Это реализуется путем указания пустого базового пути для ресурса и обработки пути к ресурсу в ViewSet.
router.register(r"", CurrentUserViewSet, basename="current-user")
class CurrentUserViewSet(viewsets.ViewSet):
...
@action(detail=False, methods=["patch"], url_path="current-user", url_name="current-user")
def current_user(self, request):
...
if request.method == 'GET':
...
elif request.method == 'PATCH':
...