Какой запрос использовать для извлечения данных из базы данных на основе некоторых отправленных данных?

Я использую genericAPIViews от django-rest-framework.

Я хочу отправить некоторые данные из интерфейса в серверную часть, и в зависимости от отправленных данных Django должен запросить модель и вернуть некоторые данные во внешний интерфейс. Отправляемые данные являются защищенными данными и, следовательно, не могут быть прикреплены к URL-адресу, поэтому запрос GET не может быть использован. Я не манипулирую базой данных, просто запрашиваю ее и возвращаю ответ (типичный вариант использования GET).

Теперь в genericAPIViews DRF я не могу найти представление, которое делает это:

Как видно из Страница Тома Кристи на GitHub только 2 представления имеют обработчик сообщений:

  1. CreateAPIView: вернуть self.create()
  2. ListCreateAPIView: вернуть self.create()

Как видно, оба этих представления имеют методы публикации, которые создают записи в базе данных, которые мне не нужны. Есть ли встроенный класс, который выполняет мою работу, или я должен использовать generics.GenericAPIView и написать свой собственный обработчик сообщений?

В настоящее время я использую generic.View с сообщением (self, request, *args, **kwargs)


person coda    schedule 25.03.2017    source источник


Ответы (1)


Думаю, у вас есть несколько вариантов на выбор. Один из способов — использовать ModelViewSet, который может быть весьма полезен из-за того, как он хорошо обрабатывает связь между представлениями, сериализаторами и моделями. Здесь ссылка на django-rest-framework ModelViewSet документы

Это действия, которые он предоставляет по умолчанию (поскольку он наследуется от GenericAPIView):

.list(), .retrieve(), .create(), .update(), .partial_update(), .destroy().

Если вам не нужны все из них, вы можете указать, какие методы вы хотите, выполнив следующие действия:

class ModelViewSet(views.ModelViewSet):
    queryset = App.objects.all()
    serializer_class = AppSerializer
    http_method_names = ['get', 'post', 'head']

Примечание. http_method_names работает с Django >= 1.8.

Источник: Отключить метод в ViewSet, django-rest-framework

person Sync    schedule 26.03.2017