Django == 1.11.12
Если файл существует, функция просмотра создает StreamingHttpResponse
, и все в порядке. Но если файл не существует, функция просмотра должна перенаправить. Проблема в том, что он не перенаправляет, а вместо этого выдает запрос на сохранение в виде файла, содержимое которого перенаправлено html.
import os
from wsgiref.util import FileWrapper
import mimetypes
from django.http import StreamingHttpResponse
from django.shortcuts import render, redirect
def download(request, file_path):
try:
response = StreamingHttpResponse(
FileWrapper(open(file_path, 'rb'), chunk_size),
content_type=mimetypes.guess_type(file_path)[0])
response['Content-Length'] = os.path.getsize(file_path)
response['Content-Disposition'] = "attachment; filename=a_file.xlsx")
except FileNotFoundError as e:
response = redirect("home")
return response