создавать и скачивать zip-файлы с помощью django / jquery - PullRequest
0 голосов
/ 23 апреля 2019

Если это дублирующий вопрос, пожалуйста, отметьте его.У меня есть некоторые данные, которые мне нужно отправить их моему клиенту (его личные данные на моем сайте).Итак, я создал ссылку: экспорт в 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

Iне могу показать пользователю окно загрузки, я попытался добавить эту ссылку <a href="#" class="result">Result</a> и поместил ответ в href, но я получил локальное размещение на моем компьютере (начинается с D: не с localhost: 8000 url).

Я загрузил свою работу на сервер, я получил URL с localhost: 8000, но с / code / добавлен, я не знаю, как.Когда я удаляю / code / и пытаюсь добраться до zip-файла, у меня появляется ошибка django: Page not found:

Request URL: http://localhost:8000/exported/user_1/compressed.zip

Я новичок в django и чувствую, что здесь что-то не хватает.Спасибо.

...