gpt4 book ai didi

django - 在 Django REST 框架中结合 request.data 和 request.query_params

转载 作者:行者123 更新时间:2023-12-04 00:07:09 26 4
gpt4 key购买 nike

我正在使用 DRF 构建一个 RPC 样式的 API,其中每个端点都可以使用 GET 或 POST 方法调用。到目前为止,我已经很好地结合了这些方法:

class UpdateUser(APIView):
permission_classes = (permissions.IsAuthenticated,)

def post(self, request, *args, **kwargs):
return self.get(request, *args, **kwargs)

def get(self, request, format=None):
# Do stuff here with request.data

不幸的是,POST 在 request.data 中提供数据,而 GET 在 request.query_params 中提供数据。有没有办法将它们组合成 request.data 或像 request.params 这样的自定义内容?解析器似乎不起作用,因为它们没有被 GET 请求调用。

最佳答案

我同意 @jorilallo 关于在 get 函数中使用 request.data 的评论。

或者,您可以做的是在 View 中创建另一个函数,该函数可以将 request.datarequest.query_params 作为参数:

class UpdateUser(APIView):
permission_classes = (permissions.IsAuthenticated,)

def post(self, request, *args, **kwargs):
# POST have request.data
return self.process_request(request, request.data)

def get(self, request, format=None):
# GET have request.query_params
return self.process_request(request, request.query_params)

def process_request(self, request, data):
# Do stuff here with data
# return a response

这里,process_request 函数从 postget 方法调用,相关的 data 作为参数传递.

关于django - 在 Django REST 框架中结合 request.data 和 request.query_params,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36616564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com