Функция вызова Django для сохранения файла не работает

Я создаю проект Django и создаю функцию для загрузки файла, Но мой проект не может работать, Файл не отвечает на сохранение

view.py

from django.http.response import HttpResponse
from django.conf import settings
from django.http import HttpResponse, Http404

def index(request):
     BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
     filename = 'my_file.json'
     filepath = BASE_DIR + '/filedownload/' + filename
     download(request,filepath)
     return HttpResponse('Download File')

def download(request, path):
     file_path = path
     if os.path.exists(file_path):
     with open(file_path, 'rb') as fh:
          response = HttpResponse(fh.read(), content_type="application/x-download")
          response['Content-Disposition'] = 'inline; filename=' + os.path.basename(file_path)
          return response
     raise Http404

Как я могу это решить?

Ваш download() возвращает ответ вашему index(), а ваш index() возвращает свой собственный ответ (не ответ download()). Если вы вернете ответ download(), как показано ниже, это будет работать.

import os
from django.http.response import HttpResponse
from django.conf import settings
from django.http import HttpResponse, Http404

def index(request):
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    filename = 'my_file.json'
    filepath = BASE_DIR + '/filedownload/' + filename
    return download(request,filepath)

def download(request, path):
    file_path = path
    if os.path.exists(file_path):
        with open(file_path, 'rb') as fh:
            response = HttpResponse(fh.read(), content_type="application/x-download")
            response['Content-Disposition'] = 'inline; filename=' + os.path.basename(file_path)
            return response
    raise Http404
Вернуться на верх