Skip to main content
 首页 » 编程设计

python之Django 查看计数器

2025年05月04日37duanxz

在我的 views.py 中实现 View 计数器功能的最佳方法是什么?

我确实在 Django 文档中找到了 F() 表达式,但是如何让它工作或有更好的主意?

提前致谢

def watch_video(request, slug): 
 
    video = get_object_or_404(Video, slug=slug) 
 
    template = "single_video.html"  
 
    #if this function will run , + 1 in Video.views ? 
 
 
    return render(request,template,{"video":video}) 

我的模型:

class Video(models.Model): 
 
    video_id = models.CharField(max_length=150) 
    title = models.CharField(max_length=150) 
    slug = AutoSlugField(populate_from="title") 
    description = models.TextField(blank=True) 
    views = models.PositiveIntegerField(default=0) 
    likes = models.PositiveIntegerField(default=0) 
    category = models.ForeignKey("VideoCategory") 
    created = models.DateTimeField(auto_now_add=True) 
    modified = models.DateTimeField(auto_now=True) 
    tags = models.ManyToManyField("Tag") 
 
 
    def __str__(self): 
 
        return self.title 
 
    def get_absolute_url(self): 
 
        return reverse("watch", kwargs={"slug" : self.slug}) 

请您参考如下方法:

在过滤单个视频的查询集上调用update():

from django.db.models import F 
 
Video.objects.filter(pk=video.pk).update(views=F('views') + 1) 
video.views += 1 # to show valid counter in the template