Перенаправить на скачивание Django - PullRequest
1 голос
/ 01 октября 2019

Я хочу отслеживать, сколько раз файл был загружен. Я вижу это так:

1) Вместо <a href="{{ file.url }}" download>...</a> я должен перенаправить пользователя для просмотра download;<a href="download/{{ file.id }}/{{ file.name }}">...</a>

file.id и file.name, необходимых для правильной работы функции ниже.

2) В моем представлении download мне необходимо зарегистрировать загрузкуконкретный файл, скажем, у меня есть registrate_dl функция, которая делает свою работу. Кроме того, мне нужно взять это значение {{ file.url }}, как в первой ссылке из первого абзаца.

3) Наконец, я зарегистрировал загрузку для определенного файла и получил {{ file.url }} как переменную file_url.

Но, если в конце функции view я помещаю return redirect(file_url), она просто перенаправляет меня в файл, без начала загрузки.


Итак, как мне вернуть это file_url и запустить загрузку?

1 Ответ

1 голос
/ 01 октября 2019

Вы можете просто вернуть файл как часть ответа. То, как вы это сделаете, зависит от точного типа файла, но вот пример CSV, который я использовал из другого ответа.

def csv_view(request):
    filename =  "Your filename"
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="{}.csv"',format(filename)
    writer = csv.writer(response)
    writer.writerow("Some stuff") 
    messages.success(request, 'Consultation added to report successfully!')
    messages.warning(request, 'Note: Certain needs may not appear in report, \
                                         this is a result of filtering process.')

    return response
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...