首页 > 解决方案 > 重定向下载 Django

问题描述

我想跟踪文件下载了多少次。我是这样看的:

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并触发下载?

标签: pythonhtmldjango

解决方案


您可以将文件作为响应的一部分返回。你如何去做取决于确切的文件类型,但这是我从另一个答案中使用的一个 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

推荐阅读