【发布时间】:2021-03-08 21:04:25
【问题描述】:
我根据类中方法的路径进行调度。 当我必须将其传递给 post 方法时,就会出现问题。 否则,我可以使用 process_request 方法将它包装在请求上。
如何将正确的请求传递给方法 这不是 HttpRequest 而是我想的 DRF 3 请求。
class AddInvoice(APIView):
@staticmethod
def process_request(request, *args, **kwargs):
if isinstance(request, HttpRequest):
return Request(request,parsers=[MultiPartParser, FormParser, JSONParser, DjangoMultiPartParser])
return request
parser_classes = (MultiPartParser, FormParser, JSONParser, DjangoMultiPartParser, FileUploadParser)
def dispatch(self, request, *args, **kwargs):
response = None
#request = AddInvoice.process_request(request, *args, **kwargs)
if request.method == 'PUT':
if request.path.rstrip('/') == '/invoice/digitize':
response = self.digitize(request,*args, **kwargs)
elif request.method == 'GET':
if request.path.startswith('/invoice/isdigitized/'):
response = self.isdigitized(request, *args,
**kwargs)
elif request.path.startswith('/invoice/get/'):
response = self.get(request, *args, **kwargs)
elif request.method == 'POST':
if request.path.rstrip('/') == '/invoice':
response = self.post(request, *args, **kwargs)
if not response:
response = Response(status=status.HTTP_406_NOT_ACCEPTABLE)
if not getattr(request, 'accepted_renderer', None):
neg = self.perform_content_negotiation(request, force=True)
request.accepted_renderer, request.accepted_media_type = neg
response.accepted_renderer = request.accepted_renderer
response.accepted_media_type = request.accepted_media_type
response.renderer_context = self.get_renderer_context()
return response
【问题讨论】:
标签: django