如果这是一个重复的问题,请随时标记。我有一些需要发送给客户的数据(他在我的网站上的个人数据)。所以我创建了一个链接:在html文件中导出:
<a href="#" class="export-data">export<i class="ft-download"></i></a>
这是我的jquery函数:
$(document).on('click', '.export-data', function(){
// get selected data and send list to backend
var data= []
$('.group-check-data').each(function(){
var checked = $(this).is(':checked');
if (checked == true){
data.push($(this).attr("data-id"));
}
});
console.log(data);
var json_data = {'csrfmiddlewaretoken' : $('.url-csrf').attr('data-csrf'), 'list-data': data};
$.ajax({
type:'POST',
url : $('.url-export-selected-data').attr('data-url-export-selected-data'),
data : json_data,
success : function(response){
$('.result').attr('href', response);
console.log(response);
}
});
});
这是我的观点:
def export_data(request):
user = get_object_or_404(User, username=request.session['username'])
# TODO: generate json of selected data
for key in request.POST.keys():
if key == "list-data[]":
list = request.POST.getlist(key)
for item in list:
path = os.path.join(EXPORT_FOLDER, 'user_{}', 'data_{}').format(user.id, int(item))
try:
shutil.rmtree(os.path.join(EXPORT_FOLDER, 'user_{}', 'data_{}').format(user.id, int(item)))
except:
print("directory does not exist")
if not os.path.exists(path):
os.makedirs(path)
generate_data(user.id, int(item))
# TODO: create zip file and export it to user
archive = shutil.make_archive(os.path.join(EXPORT_FOLDER, 'user_{}', 'compressed').format(user.id), 'zip',
os.path.join(EXPORT_FOLDER, 'user_{}').format(user.id))
response = HttpResponse(archive, content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=foobar.zip'
return response
我无法向用户显示下载窗口,我尝试添加此链接<a href="#" class="result">Result</a>
并将响应放入其href
中,但是我在计算机中放置了本地位置(以D开头:not使用localhost:8000网址)。
我将我的工作上传到服务器上,我的网址是localhost:8000,但是添加了/ code /,我不知道如何。当我删除/ code /并尝试访问zip文件时,出现django错误:Page not found
:
Request URL: http://localhost:8000/exported/user_1/compressed.zip
我是django的新手,我觉得这里有点缺。 谢谢。