如何在Django中获取Api身体参数

时间:2019-02-18 10:02:59

标签: django django-models django-rest-framework django-views

我想在我的视图中获取api body参数。我想应用搜索过滤器。我正在使用self.request.GET.get('query'),但始终在给none。我如何从邮递员那里获取身体参数,我正在身体中发送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 :(得分:2)

为了获取主体参数,我假设您正在使用POST方法来请求api。获取POST数据非常简单,self.request.POST.get('query')

答案 1 :(得分:1)

您的实际问题似乎不包含查询参数(正文数据)。 但是您没有正确通过它。 您应该传递/your-url/?query=Active(用=代替:)。 当您传递query:Active时,它将整个“ query:Active”作为正文中的一个键。

答案 2 :(得分:0)

在纯Django中,获取 body 内容的方法是使用request.POST,而获取查询参数的方法是使用request.GET。由于您似乎正在使用Django rest框架视图,因此建议改用其request.datarequest.query_params

假设邮递员发送格式正确的数据,在这种情况下,您可以使用:

query = self.request.data.get("query")