Переопределить ответ POST в Django Rest Framework

Я использую Generics Django Rest Framework (generics.ListCreateAPIView), когда я делаю запрос POST, я получаю ответ Http-кода (200/400/..etc.) и JSON, показывающий опубликованные данные, мне нужно знать, как могу ли я переопределить ответ, чтобы получить собственный ответ.

Обратите внимание, что я использую

    def perform_create(self,serializer):
        return Response(<my response>)

чтобы переопределить обработку запроса POST, но я все равно получаю тот же ответ


person P. Naoum    schedule 20.06.2017    source источник


Ответы (1)


Ответ от perform_create игнорируется. Скорее всего, вы захотите переопределить метод create, используя примеси в качестве примера

person Linovia    schedule 20.06.2017
comment
Должен ли я использовать Mixins вместо дженериков, или есть способ использовать оба вместе? - person P. Naoum; 20.06.2017
comment
Не уверен, что вы имеете в виду, но идея состоит в том, что вы копируете/вставляете связанный метод создания в свой код, используете serializer.data в качестве базы для создания собственных данных ответа и, наконец, передаете их в ответ. Если вам нужно сделать это для нескольких представлений, вы должны обязательно рассмотреть Mixin, который вы добавите в свои представления. - person Linovia; 20.06.2017
comment
Работаем, Спасибо! - person P. Naoum; 20.06.2017
comment
Проблема в том, что если вы переопределяете create вместо Perform_create, вам нужно (обычно) копировать большую часть кода в обычном create() в DRF. По мере развития DRF это может измениться, и каждый фрагмент кода, который вы должны были взять из DRF в свои переопределения, в конечном итоге сгниет, если его не поддерживать. Хотя вы не можете возвращать пользовательские ответы непосредственно из Perform_create, вы можете получить свои собственные исключения APIException и вызвать их там, а также позволить APIView по умолчанию передавать их настраиваемое содержимое клиенту. - person BjornW; 04.11.2020
comment
По мере развития DRF это может измениться, что маловероятно. Миграция Python 2 Appart, большей части кода 6 лет, а некоторая часть была оптимизирована 4 года назад (хотя вы все равно лучше оптимизируете сами). Это достаточно стабильно. - person Linovia; 04.11.2020