#django #api #crud #endpoint
#django #API #crud #конечная точка
Вопрос:
Я создавал разные конечные точки api для разных запросов, например, для каждого отдельного api для получения, публикации, удаления и обновления в общем apiview. Но мой разработчик интерфейса сказал мне, что это очень плохая практика, и мне нужно иметь единый API для всех этих 4 запросов. Когда я посмотрел его в документации, есть ListCreateApiView для перечисления и создания объекта, но я не могу использовать его для удаления, а также для обновления. Как я могу включить эти два в одну конечную точку. Я не использую представление modelset, а также функциональное представление. В основном я использую общие представления api.
Ответ №1:
Вы пробовали rest framework ModelViewSet
?
т.е.:
from rest_framework.viewsets import ModelViewSet
В котором есть все микшины (CRUD), и вы можете наследовать от него в своем представлении API.
Или вы можете добавить эти микшины в зависимости от ваших требований:
from rest_framework.mixins import CreateModelMixin, ListModelMixin, RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin
и вы можете наследовать от каждого из них отдельно. Например:
Class SomeView(CreateModelMixin, DestroyModelMixin, GenericViewSet):
pass
который имеет возможность создания и удаления. Вы также можете использовать микшины с GenericAPIView
:
Class SomeView(CreateModelMixin, DestroyModelMixin, GenericAPIView):
pass
Комментарии:
1. Я не использую modelviewset, я использую только genericapiview, и мне это нравится. Доступны ли микшины для общего представления api или нет опции, а не для переключения на modelviewset.??
2. Я обновил свой ответ… пожалуйста, взгляните на последние строки.
3. Это означает, что я могу использовать mixins и в общем представлении, правильно?? Кроме того, пожалуйста, поправьте меня, что означает, что mixins может наследовать эти функции, если я использую их в своем классе view, вот почему используются mixins, верно??
4. Да, вы можете использовать их в своих общих представлениях. Микшины предназначены для улучшения ваших возможностей класса… Вы не можете использовать их отдельно… потому что они зависят от других классов… вот почему вы должны наследовать от
GenericAPIView
илиGenericViewSet
при наследовании от mixins.5. Большое вам спасибо! Теперь я могу использовать общий вид API и не нужно переключаться на набор modelview.