从Django Rest Framework中的可浏览API处理POST请求查询参数

时间:2019-04-22 21:46:32

标签: python django django-rest-framework

我要求在POST请求中有一个查询参数,并且正文中包含JSON负载。

现在,在django-rest-framework中,我已经可以通过在视图类中覆盖ModelViewSet的perform_create方法来做到这一点,但是我可以做些什么使它出现在可浏览的API中。我尝试了django-filter及其后端,但是它们适合于(显然)在GET请求中进行过滤。我不想过滤,但只想使用该查询参数作为在perform_create期间运行celery任务的参数。

这就是我现在的视线。

class AbcViewSet(viewsets.ModelViewSet):
    queryset = Abc.objects.all()
    serializer_class = AbcSerializer
    filterset_fields = ('fk_field', )


    def perform_create(self, serializer):
        query_param1 = self.request.query_params.get('param', None)
        ...schedule salary using the query_param1 and save the model...


我对此的要求将类似于http://127.0.0.1:8000/abc/?param=xyz

如果您在上面注意到,我希望能够使用可浏览的API来填充param。尝试搜索时,我有一种感觉,它将涉及为该参数创建某种HTML视图呈现,但是如果可浏览的API更容易获得它,那肯定会有所帮助。现在,除了过滤器,我看不到任何发送查询参数的方法。

1 个答案:

答案 0 :(得分:1)

您可以使用特定的查询参数调用可浏览的API,例如:

http://localhost:8000/yoururl?param=111,并且在执行 POST 时,self.request.query_params将产生<QueryDict: {'param': ['111']}>