Как получить Api Body Parameter в Джанго - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу получить параметр тела API в моем представлении.Я хочу применить поисковый фильтр.Я использую self.request.GET.get('query'), но он всегда дает none.Как я могу получить Body Parameter Like от Почтальона? Я посылаю query:Active в теле.Но я не понимаю

class JobsListAPIView(generics.ListAPIView):
    serializer_class = JobListSerialzer
    # pagination_class = ListLimitOffsetPagination
    permission_classes = [UserIsAuthenticated]

    def get_queryset(self, *args, **kwargs):
        # print('self.request.auth', self.request.auth.application.user.userprofile.user_company.id)

        qs = Jobs.objects.exclude(job_is_deleted = True).filter(
            job_company = self.request.auth.application.company
        )

        query = self.request.GET.get('query')
        print('query: ', request.data)

        if query:
            qs = qs.filter(job_status=query)

        return qs

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

В чистом Django способ получения содержимого тела должен использовать request.POST, а для получения параметров запроса - request.GET.Поскольку кажется, что вы используете Django rest framework view, рекомендуется вместо этого использовать его request.data и request.query_params.

Предполагая, что почтальон отправляет данные в надлежащем формате, в этом случае вы можете использовать:

query = self.request.data.get("query")
0 голосов
/ 18 февраля 2019

Ваша настоящая проблема не в том, чтобы принять параметр запроса (данные тела).но вы не проходите это должным образом.Вы должны передать /your-url/?query=Active (заменено: на =).когда вы передаете query: Active, он принимает весь «query: Active» как один ключ в теле.

0 голосов
/ 18 февраля 2019

Для получения параметров тела я предполагаю, что вы используете метод POST для запроса API.Получение данных POST так же просто, как self.request.POST.get('query')

...