Загрузка файла Excel в представлении Django

Я включил файл excel в каталог моего проекта. Я хочу создать представление Django, которое позволит пользователю скачать этот файл. Пожалуйста, как мне лучше всего это сделать?

import csv
from django.http import StreamingHttpResponse
# create an echo handler, returns what is put into for the writer
psuedo_buffer = Echo()
#Build csv writer ontop of echo filelike instance
writer = csv.writer(psuedo_buffer)
#Stream the response row by row using the psuedo_writer
response = StreamingHttpResponse((
    writer.writerow(row) for row in query_data),
    content_type="text/csv"
)
response['Content-Disposition'] = 'attachment; filename="Something.csv"'
return response

Это фрагмент кода, который я использую для возврата потокового HTTP-ответа с данными. Данные, которые будут в query_data, могут быть либо необработанными CSV данными из обработчика файла, который вы можете легко найти несколько способов открыть данные и бросить их в эту функцию, либо вы можете использовать массивы данных из наборов запросов для передачи. Просто отформатируйте ваши данные для query_set и верните этот обработчик Response в представлениях API или Template. Надеюсь, это поможет!

Данные должны быть отформатированы в массивы данных, которые вы можете использовать .dict для получения парсируемых данных из большинства моделей или просто парсинг csv в память с помощью библиотеки CSV выполнит то же самое.

Связан ли ваш файл с Моделью? Я предпочитаю создавать Модель для хранения общих ресурсов.

models.py

class Resources(models.Model):
    description = models.CharField(max_length=200)
    file = models.FileField(upload_to='uploads/resources/')

    def __str__(self):
        return self.description  

views.py

...
some_file = Resources.objects.get(description='Your description')
...

return render(request, "template.html", {
    "some_file": some_file,
}

template.html

...
    <p>Download <a href="{{ some_file.file.url }}" target="_blank">file.</a></p>
...
Вернуться на верх