【发布时间】:2021-12-05 10:42:49
【问题描述】:
我正在创建一个用户可以下载免费赠品的网站。我想记录每个项目的总下载量,然后在我的后端显示这个值。目前,我正在使用此功能允许用户从静态文件夹中下载文件。
型号:
upload = models.FileField(upload_to ='uploads/')
downloads = models.ManyToManyField(User, related_name='post_download')
网址:
path('downloads/<int:pk>', DownloadView, name= 'download_post'),
查看:
def DownloadView(request, pk):
post = get_object_or_404(Item, id=request.POST.get('item_id'))
post.downloads.add(request.user)
return HttpResponseRedirect(reverse('item_detail', args=[str(pk)]))
模板:
<div class="flex items-center justify-center">
<a href="{{item.upload.url}} " class="text-white w-full text-center bg-black p-4 rounded-lg mt-8 hover:bg-gray-800"><button>Download this file | <span class="text-xs text-green-400">{{object.upload.size|filesizeformat}}</span></button></a>
</div>
【问题讨论】:
-
也许您可以在模型上为其创建一个字段,在模板上下文中加载它,并在单击下载按钮时使用 Javascript 对数据库进行 Ajax 调用,从而更新该字段。跨度>
-
我猜它是每个模型实例一个
upload,所以你会为该模型添加一个计数器并在收到 DL 请求时增加它。
标签: django counter downloadfile