Общий набор представлений Django restframework не работает с представлениями get и get с одним и тем же url_path и url_name

#django #django-rest-framework #django-views #django-rest-viewsets

Вопрос:

Как я могу сделать два представления в DRF Generic viewset использовании одних и тех же url_path и url_names при условии, что используются одни и те же или разные методы, но разные details значения, например, оба могут быть Get методами, но будут иметь details=True и details=False на них

пример кода для большей ясности;

  @action(methods=["get"], detail=False, url_path="list-users", url_name="users")
    def get_users(self, request):
        # code here
 
  @action(methods=["get"], detail=True, url_path="users", url_name="users")
    def get_user(self, request, id):

        # code here
 

get_users работают с этой конечной точкой -> {{base_url}}/{{prefix}}/users

get_user не работает с -> {{base_url}}/{{prefix}}/{{user-id}}/users

но если я изменю url_path и url_name на что-то другое, например — > single-user

тогда конечная точка для получения одного пользователя работает -> {{base_url}}/{{prefix}}/{{user-id}}/single-user

как я могу решить эту проблему, чтобы у пользователей и пользователя были одинаковые url_name и url_path, потому что действия детализированы как False (пользователи) и True (пользователь) для них обоих соответственно

NB; Also please note that this viewset does not make use of any model

Комментарии:

1. url_name должно быть уникальным для каждого вида

Ответ №1:

Итак, я понял это, у DRF на самом деле есть дополнительные методы маршрутизации HTTP для дополнительных действий, которые можно просмотреть здесь; https://www.django-rest-framework.org/api-guide/viewsets/#routing-additional-http-methods-for-extra-actions