我希望通过打包所有由函数创建的单个或多个文件来下载它们。问题出在模板上。
请建议正确地传递GET参数以获取文件列表。
我遇到了一个错误:
FileNotFoundError at /test/
[Errno 2] No such file or directory: '['
这是未正确放置查询字符串引用文件列表时出现的错误。
我的看法如下:
def submit(request):
def file_conversion(input_file,output_file_pattern,chunk_size):
output_filenames = []
with open(input_file,"r+") as fin:
# ignore headers of input files
for i in range(1):
fin.__next__()
reader = csv.reader(fin, delimiter=',')
for i, chunk in enumerate(chunked(reader, chunk_size)):
output_filename = output_file_pattern.format(i)
with open(output_filename, 'w', newline='') as fout:
output_filenames.append(output_filename)
writer = csv.writer(fout, reader, delimiter='^')
writer.writerow(fed_headers)
writer.writerows(chunk)
# print("Successfully converted into", output_file)
return output_filenames
paths = file_conversion(input_file,output_file+'{01}.csv',10000)
# paths return a list of filenames that are created like output_file1.csv,output_file2.csv can be of any limit
# when i tried paths[0], it returns output_file1.csv
context = {'paths' :paths}
def test_download(request):
paths = request.GET.get('paths')
context ={'paths': paths}
response = HttpResponse(content_type='application/zip')
zip_file = zipfile.ZipFile(response, 'w')
for filename in paths:
zip_file.write(filename)
zip_file.close()
response['Content-Disposition'] = 'attachment; filename='+'converted files'
return response
模板
<p>
<a href ="{% url 'test_download' %}?paths={{ paths|urlencode }} " download>Converted Files</a> </p>
<br>
帮我找到问题所在。
?path正在寻找文件,但它却发现了列表。
然后我尝试了:
def test_download(request):
paths = request.GET.getlist('paths')
context ={'paths': paths}
response = HttpResponse(content_type='application/zip')
zip_file = zipfile.ZipFile(response, 'w')
for filename in paths:
zip_file.write(filename)
zip_file.close()
response['Content-Disposition'] = 'attachment; filename='+'converted files'
return response
模板:
<p> <a href ="{% url 'test_download' %}?paths=path1 " download>Converted Files</a> </p>
<br>
它会按照以下方式查找文件:
FileNotFoundError at /test/
[Errno 2] No such file or directory: '/home/rikesh/Projects/FedMall/main/temp/47QSHA19D003A_UPDATE_20210113_{:01}.csv'
the file path should be :
/home/rikesh/Projects/FedMall/main/temp/47QSHA19D003A_UPDATE_20210113_0.csv