Django | Type error - missing 1 required positional argument: 'file_id'

Здравствуйте, я пытаюсь создать платформу, которая будет решать проблемы, а затем позволит пользователю скачать файл с результатом. У меня проблемы с загрузкой, вот ошибка, которую я получаю

TypeError at /download/
download() missing 1 required positional argument: 'file_id'

models.py

class Snippet(models.Model):
email = models.CharField(max_length=100)
file = models.FileField(upload_to='documents/')

def __str__(self):
       return self.email

urls.py

from . import views
from .views import (snippet_detail)

app_name = 'app'

path('download/<int:file_id>/', views.snippet_detail, name='snippet_detail'),

views.py

def download(request, file_id):
media_path = "/home/me/project/media/documents/"
result_path = '/home/me/Desktop/'
max_timeout = 1*24*60*60 #days*hours*mins*secs

if request.method == 'POST':
    form = SnippetForm(request.POST, request.FILES)
    if form.is_valid():
        form = Snippet(file=request.FILES['file'])
        form.save()

        file_name_final = form.file.name[10:]
        file_path = media_path + file_name_final

        ### analysis code ###

        data_id = test['outputs'][0].get('id')

        datamap = dict()
        datamap['0'] = {'src': 'hda', 'id': data_id}
        results_run = ..
        results_id = results_run['outputs']
        file_id= ''.join(results_id)
        
        if file_id !='':
            filepath= 'result_path' + file_id
            path = open(filepath, 'rb')
            mime_type, _ = mimetypes.guess_type(filepath)
            response = HttpResponse(path, content_type=mime_type)
            response['Content-Disposition'] = "attachment; file_id=%s" % file_id
            return redirect('/download/{file_id}')
        else:
            raise Http404("No result file")

download.html

<p>Your problem is solved please click here to download
      <a class="btn btn-default btn-sm" title="Download the file" data-toggle="tooltip"
      data-placement="right" href="{% url 'app:snippet_detail' file.id %}">
        <i class="bi bi-download"></i>
      </a>
    </p>

В вашем представлении загрузки должно быть так:

return redirect('download', file_id=file_id)

Но это вызовет то же самое представление снова, я не думаю, что вы хотите этого, так что это должно быть:

return response

Также я думаю, что url неправильный, он должен быть:

path('download/<int:file_id>/', views.download, name='download')
Вернуться на верх