#javascript #python #django #ajax #powerpoint
#javascript #python #django #ajax #powerpoint
Вопрос:
Я пытаюсь использовать django, python-pptx для загрузки Excel и возврата ppt. Я уже успешно использую ajax для загрузки Excel, а также python-pptx для создания ppt.Но я не могу вернуть файл ppt и как его загрузить (я хочу использовать ajax mthod). Есть две основные проблемы, которые я не могу решить
во-первых, я не могу использовать ajax для создания формы, потому что csrf всегда останавливает меня.Я знаю formdata.append('csrfmiddlewaretoken', '{{csrf_token}}')
, но я не могу использовать его в
if (disp amp;amp; disp.search('attachment') != -1) {
var form = $('<form action="' '/auto/' '" method="post"></form>');
$('body').append(form);`enter code here
<script>
function loadFile(file) {
$("#filename").html(file.name);
console.log(file.name)
}
$("#btn").bind("click", function() {
var formdata = new FormData()
var file = $("#ranran")[0].files[0]
formdata.append('file', file)
formdata.append('name', file['name'])
formdata.append('csrfmiddlewaretoken', '{{csrf_token}}')
console.log(formdata)
$.ajax({
type: "post",
url: "/auto/",
contentType: false,
processData: false,
data: formdata,
success: function(response, status, request) {
var disp = request.getResponseHeader('Content-Disposition');
if (disp amp;amp; disp.search('attachment') != -1) {
var form = $('<form action="' '/auto/' '" method="post"></form>');
$('body').append(form);
form.submit();
}
}
})
})
</script>`
во-вторых, как я могу вернуть файловый запрос
from pptx import Presentation
from django.http import FileResponse
prs = Presentation()
return FileResponse(prs)
в нем говорится
Объект ‘Presentation’ не может быть повторен
Пожалуйста, помогите мне, спасибо
Комментарии:
1. Вероятно, необходимо сохранить презентацию в виде файла или
io.BytesIO
перед применениемFileResponse()
. Что-то вроде prs.save(«my-prs.pptx «). Выполните поиск при сохранении в файл в памяти, если вы не хотите, чтобы файловая система была забита загружаемыми временными файлами.