如何使用djanghitcount包来构建视图帐户

2024-05-12 18:57:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Django,遇到了这个Django包,名为“Django hitcount”。但我不知道怎么用它来计算。我想显示一个对象被查看的次数

下面是我的视图.py在

def home(request):
    songs = Songs.objects.all()
    return render(request, 'explore/home.html', {'songs': songs})
    count_hit = True

这是我的模型.py在

^{2}$

以及我的html文件 ... 在

    <p><strong><h5>{{ song.song_title }}</h5></strong></p>
    <p><h5>{{ song.artist }}</h5></p>
    <span>plays: {% get_hit_count for [song] %}</span>

Tags: 对象djangopyhomesongrequesthtmlcount
1条回答
网友
1楼 · 发布于 2024-05-12 18:57:21

你混合了不同的计算命中率和显示命中率的方法。在

首先,要计算一个对象的点击数,需要添加一个DetailView,它显示一首歌。这个类也是添加count_hit参数的地方,如下所示(视图.py)公司名称:

from hitcount.views import HitCountDetailView

class SongDetailView(HitCountDetailView):
    model = Song        
    count_hit = True    
    template = 'song_detail.html'

    def get(self, request, *args, **kwargs):
        self.object = self.get_object()
        context = self.get_context_data(object=self.object)
        return redirect(self.object.song.audio_file.url)

HitCountDetailView是hitcount的内置视图,它获取单个对象并将hitcount相加。在

添加模板以显示单曲(乐曲_详细信息.html)公司名称:

^{pr2}$

然后在url中添加以下模式(网址.py)公司名称:

urlpatterns = [
    ...
    path('song/<int:id>/', SongDetailView.as_view(), name='song-detail'),
    ...
]

现在有两个url,一个指向home,另一个指向song/,第一个应该显示歌曲列表,第二个只显示一个歌曲。在

您的原始代码中有一些不必要/错误的代码,我将在下面解释:

你的模型.py与HitCount有一个通用关系,这是不必要的,除非您想直接查找这个模型HitCount,但是现在,您可以将它排除在外。在

应该将HitCountMixin添加到视图中,特别是基于类的视图,但不能添加到模型中。你呢模型.py应该是这样的:

class Songs(models.Model):
    ...
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)

    class Meta:
        ordering = ['-updated']

    def __str__(self):
        return self.song_title

你的模板看起来像是文件的一部分,但如果不是,那就不正确。最好是循环播放每首歌曲(也可以链接到新的详细信息视图),如下所示:

{% for song in songs %}
    <p><strong><h5>{{ song.song_title }}</h5></strong></p>
    <p><h5>{{ song.artist }}</h5></p>
    <span>plays: {% get_hit_count for [song] %}</span>
    <a href="{% url 'song-detail' song.id %}">Play song</a>
{% endfor %}

相关问题 更多 >