Django实现PDF下载:API生成PDF后直接返回HttpResponse
修改views.py实现PDF直接下载(无需本地存储)
你可以直接利用API返回的PDF内容,通过Django的HttpResponse实现浏览器直接下载,完全不需要保存到本地文件夹。修改后的代码如下:
from django.http import HttpResponse def downloadpdf(request, feedback_id): apiKey = '*****************' resume = Personal_Details.objects.get(feedback_id=feedback_id) response = requests.post( 'https://api.restpdf.io/v1/pdf', headers={ 'X-API-KEY': apiKey, 'content-type': 'application/json' }, json={ "output": "data", "url": "https://github.com/chryzcode" } ) if response.status_code == 200: # 直接把API返回的PDF内容存入变量 pdf_content = response.content # 创建HttpResponse,指定内容类型为PDF response = HttpResponse(pdf_content, content_type='application/pdf') # 设置响应头,让浏览器触发下载,指定文件名 response['Content-Disposition'] = f'attachment; filename="{resume.resume_name}.pdf"' return response else: # 错误情况返回提示(也可根据需求返回自定义错误页面) return HttpResponse("转换PDF时出错,请稍后重试", status=500)
关键修改说明:
- 删掉了本地文件写入的代码,直接将API返回的
response.content存入变量pdf_content - 用
HttpResponse包装PDF内容,设置content-type为application/pdf,让浏览器识别这是PDF文件 - 添加
Content-Disposition响应头,通过attachment触发浏览器的下载行为,同时指定下载的文件名 - 错误分支替换为返回HttpResponse错误提示,替代原来的控制台print输出,符合Web请求的响应规范
内容的提问来源于stack exchange,提问作者chryzcode
相关产品推荐
相关产品推荐

