我正在用Django做一个项目,比如一个音乐播放器,这是我的模型:
class Song(models.Model):
"""Model representing a song"""
name = models.CharField(
max_length=200, help_text=_('Enter a song name'))
image = models.ImageField(
upload_to='cover_image')
content = models.FileField(upload_to='songs')
artist = models.ForeignKey(User, on_delete=models.CASCADE)
status = models.BooleanField(
default=False,
help_text=_('Check this box to make the song public')
)
由于我已经配置了上传的文件夹和所有,所有我必须做的是在我的模板添加下载属性的标签,它将下载文件的用户
<a href="/media/{{ i.content }}" download="{{ i.name }}" type="video/mp4">
<button class="btn btn-outline-danger">Download Song </button>
</a>
这工作完美,但它被证明是相当困难的,如果我想得到下载计数的歌曲。我在考虑给它一个onclick属性,这样当我点击download按钮时,它会触发一个JavaScript函数,向视图发送一个隐藏的表单,以增加downloads值。然而,我认为这是相当复杂的,所以我想知道是否有一个更好的方法来做到这一点。
1条答案
按热度按时间p3rjfoxz1#
在Django中有多种方法来跟踪歌曲的下载计数。
创建一个新模型来跟踪下载计数:
更新视图以处理下载请求并增加下载计数:
更新您的模板,以便在单击Download按钮时调用download_song视图
为urls.py中的download_song视图添加URL模式
middleware
。在Django设置中注册中间件类
更新您的模板,以便在单击下载按钮时将歌曲ID作为查询参数传递