Django休息框架ApiView重新编译可执行文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django休息框架ApiView重新编译可执行文件相关的知识,希望对你有一定的参考价值。

问题类似于这个django rest framework return file

尝试应用类似的解决方案在Django Rest ApiView中返回可执行的python二进制文件:

from wsgiref.util import FileWrapper

bin_file = open(f'cli/builds/dist/cli', 'rb')
response = Response(FileWrapper(bin_file), content_type='application/octet-stream')
response['Content-Disposition'] = f'attachment; filename="cli"'
response.status_code = status.HTTP_200_OK
return response

得到Object of type 'FileWrapper' is not JSON serializable错误。参考前面提到的SO主题 - 这个解决方案适用于zip文件。

问题 - 为什么它不能用于我的设置,返回python可执行文件?

python 3.6.5djangorestframework==3.8.2

尝试过ResponseHttpResponse课程

答案

尝试使用HttpResponse而不是DRF的Response

from wsgiref.util import FileWrapper
from django.http.response import HttpResponse

bin_file = open(f'cli/builds/dist/cli', 'rb')
response = HttpResponse(FileWrapper(bin_file), content_type='application/octet-stream')
response['Content-Disposition'] = f'attachment; filename="cli"'
response.status_code = status.HTTP_200_OK
return response

以上是关于Django休息框架ApiView重新编译可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

Django Rest 框架 - APIView 分页

有没有办法使用 Django REST 框架中的可浏览 API 上传文件?

DRF框架之视图基类APIView和GenericAPIView简介

Django最牛逼,史上强无敌!最详细的教程!框架认证源码分析!

Django Rest框架 APIView源码调用

django--View