Как я могу загрузить документ Word, созданный приложением Django в том же приложении - PullRequest
1 голос
/ 09 ноября 2019

У меня есть приложение django, которое создает документ Word из шаблона. После ввода пользователя я делаю ajax запрос к моему views.py и создаю документ. После того, как документ создан, я хочу, чтобы он был загружен с сервера. Документ сохраняется в папке static / documents. В моем шаблоне у меня есть следующее:

$.ajax({
            url: '/ajax/result/',
            data : { 'values': JSON.stringify(dataJson),
                     'general': JSON.stringify(generalData)
        },
            method: 'GET',
            contentType: "application/json",
            dataType: 'json',
            success: function (data){
                Download('documents/'+document.getElementById('id_file_name').value+'.docx');
                alert(data);

            },
            error: function(data) { 
                alert("something went wrong");

            }
        });

        function Download(url) {
            document.getElementById('my_iframe').src = url;
        };

Функция Download(url) - это функция, которая загружает документ. Я могу получить имя файла документа, так как это из пользовательского ввода. В настоящее время я получаю ошибку 404 на моей консоли. Заранее спасибо

Ответы [ 2 ]

1 голос
/ 09 ноября 2019

Вам необходимо указать фактический путь к файлу

Download('http://127.0.0.1:8000/something/something/documents/'+document.getElementById('id_file_name').value+'.docx');
0 голосов
/ 09 ноября 2019

Если вы можете использовать эту технику для своих представлений:

    file_name = ## your file name
    file_root = ## your file root
    with open(file_root , 'rb') as f:
        wrapper = FileWrapper(f)
        mimetype = "application/force-download"
        guessed_type = guess_type(file_name)[0]
        if guessed_type:
            mimetype = guessed_type
        response = HttpResponse(wrapper, mimetype)
        response['Content-Disposition'] = "attachment;filename=%s"%(download_obj.get_name)
        response['X-SendFile'] = "%s"%(download_obj.get_name)
        return response

Не забудьте импортировать необходимые вещи поверх вашего файла views.py:

from django.shortcuts import HttpResponse
from mimetypes import guess_type
from wsgiref.util import FileWrapper

СоздатьНовый URL-адрес для этого представления и нажав URL-адрес из ajax, вы можете динамически передать имя файла в представление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...