python - 重定向下载 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
并触发下载?
解决方案
您可以将文件作为响应的一部分返回。你如何去做取决于确切的文件类型,但这是我从另一个答案中使用的一个 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
推荐阅读
- javascript - TinyMCE 图像类问题
- android - Dagger-2:未注入字段
- angular - 嵌入与 ng-content 子项的不同 ChangeDetectionStrategy.OnPush 行为
- php - PHP 和 MySQL。将 Connect-DB 包含在函数之外
- excel - 通过单选按钮删除多个选定的行
- python - seaborn 聚类的问题
- python - 与 Google SSO SAML 集成
- ios - 没有收到 CloudKit 推送通知
- c# - C#如何通过单击按钮从表中删除当前行
- google-cloud-platform - GCP 使用 gcloud 是否可以检索推荐的 VM 调整大小