django: неожиданная загрузка файла после перенаправления, когда файл не существует - PullRequest
0 голосов
/ 11 марта 2020

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

1 Ответ

0 голосов
/ 11 марта 2020

Оказывается, проблема заключается в шаблоне, где ссылка для скачивания равна <a href="xxx" download>, а атрибут загрузки вызывает загрузку.

...