我要求在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更容易获得它,那肯定会有所帮助。现在,除了过滤器,我看不到任何发送查询参数的方法。
答案 0 :(得分:1)
您可以使用特定的查询参数调用可浏览的API,例如:
http://localhost:8000/yoururl?param=111
,并且在执行 POST 时,self.request.query_params
将产生<QueryDict: {'param': ['111']}>
。