Django:压缩选定对象的pdf
Posted
技术标签:
【中文标题】Django:压缩选定对象的pdf【英文标题】:Django : Zipping selected object's pdf 【发布时间】:2017-07-21 07:22:31 【问题描述】:我有一个显示培训师姓名、位置等的索引视图以及一个下载他们的个人资料的按钮(已经在数据库中作为 pdf 格式)。我根据一些参数搜索和过滤这些。现在我希望能够选择其中一些并下载选定的培训师资料。我是 Django 新手,不知道该怎么做。这是我的代码。它说'FieldFile 对象不可调用' 视图.py def 下载(请求): 导入压缩文件 导入操作系统
file = zipfile.ZipFile("C:\\Downloads\\test.zip", "w")
filelist = []
filelist+= 'Trainer.checkboxoption' in request.REQUEST
for i in filelist:
file.write(i)
file.close()
return render(request,'trainer/index.html')
index.html
<form action="download/" method="post">
<div class="caption">
<div >
<table style="width:100%" class="table">
<tr>
<th>#</th>
<th>Name</th>
<th>Technology</th>
<th>Location</th>
<th> View</th>
<th>Download</th>
<th>Delete</th>
</tr>
% for trainer in all_trainers %
<tr>
<td><input type="checkbox" id="trainer forloop.counter " name="trainer" value=" trainer.id "></td>
<td> <a href="/trainer/ trainer.id "> trainer.name </td>
<td> trainer.technology </td></a>
<td> trainer.location </td>
<!-- View Details -->
<td><a href="/trainer/ trainer.id " class="btn btn-primary btn-sm">View Details</a></td>
<td><a href="../media/ trainer.trainer_profile " class="btn">Download PDF</a></td>
<!-- Delete Album -->
<td><form action="trainer/trainer.id /delete/" method="post">
% csrf_token %
<input type="hidden" name="trainer_id" value=" trainer.id " />
<button type="submit" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-trash"></span>
</button>
</form></td>
</tr>
% endfor %
</table>
</div>
</div>
<input type="submit" value="Download ZIP">
</form>
【问题讨论】:
为什么它需要在一个 zip 中? 很难单独下载每个文件..文件超过1000个 啊好吧,我误会了。 【参考方案1】:views.py:
def download(request):
import zipfile
filef = zipfile.ZipFile("test.zip", "w")
var = request.POST.getlist('checks')
pdfprofile = []
for i in var:
trainer= Trainer.objects.get(pk=i)
pdfprofile.append(trainer.trainer_profile)
for i in pdfprofile:
filef.write("D:\\Django\\myproduct\\media\\"+str(i))
filef.close()
response = HttpResponse(open("test.zip", "rb").read(), content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=test.zip'
return response
【讨论】:
以上是关于Django:压缩选定对象的pdf的主要内容,如果未能解决你的问题,请参考以下文章