2017-01-26 3 views
-4

Я использую Django Rest Framework и Angular для создания приложения. Я создал классы Serializers и ModelViewSet для своих моделей, к которым я хочу получить доступ в интерфейсе Angular.Пользовательская функция API

В настоящее время все работает нормально, но я хотел бы иметь функциональность помимо основных операций.

Прямо сейчас, я могу выполнять запросы CRUD только из моего внешнего сервиса. Но я хотел бы создать функции, которые будут «получать последние» или что-то более конкретное.

Желательно, чтобы внутренняя модель взаимодействовала с соответствующим Угловым ресурсом.

Заранее благодарен!

+0

Это отражено в большой степени в документации для viewsets. – Sayse

ответ

1

Вам просто нужно определить пользовательские конечные точки в вашем представлении Django.

class AccountViewSet(viewsets.ModelViewSet): 
    """ 
    A simple ViewSet for viewing and editing the accounts 
    associated with the user. 
    """ 
    serializer_class = AccountSerializer 
    permission_classes = [IsAccountAdminOrReadOnly] 

    @list_route(methods=['get']) 
    def get_most_recent(self): 
     <get the most recent account code here> 
     return Request(data, status=200) 

Затем в угловом код, который вы просто сделать запрос к соответствующему конечной ... что-то вроде http://yoururl.com/accounts/get_most_recent. Вы можете сделать это с помощью любых глаголов REST (GET, POST ...), определив, какие глаголы вы хотите принять в массиве методов.

Docs здесь: http://www.django-rest-framework.org/api-guide/viewsets/#modelviewset

+0

Спасибо. В чем разница между list_route и detail_route? – zubhav

+0

list_route - это общий запрос к конечной точке. detail_route отправляет первичный ключ и используется для доступа к определенному ресурсу. List_route будет похож на .com/user, а detail_route будет похож на .com/user/1234 (1234 - конкретный номер идентификатора пользователя). Все это в документах. Также, если это помогло, пожалуйста, примите мой ответ. – joed4no

Смежные вопросы