0

如何计算对象的调用次数。例如:我有一个图像应用程序,我想向用户展示一张图片被调用的频率。喜欢 youtube 上的 videoviews

4

2 回答 2

2

您需要在表中存储一个计数,并在每次使用图像时递增它。

首先,如果您还没有一个字段来存储计数,请向您的模型添加一个字段:

class MyImageClass(models.Model):
    ...
    views = models.PositiveIntegerField(default=0)

然后,您需要创建一个视图,该视图将返回图像数据并增加视图计数。

def my_image_view(request, id):
    instance = get_object_or_404(MyImageClass, id=id)

    filename, ext = os.path.splitext(instance.image_field.name)
    ext = ext[1:].lower() # remove period and normalize to lowercase

    instance.views += 1
    instance.save()

    response = HttpResponse(instance.image_field.read(), mimetype='image/%s' % ext)
    response['Content-Disposition'] = 'inline;filename=%s.%s' % (filename, ext)
    return response

将视图挂钩到 urlpattern,然后在您的模板中调用图像:

<img src="{% url my_image_view_name id=my_image.id %}">

您肯定需要对此进行一些优化,并且需要考虑线程安全问题,但这足以让您顺利进行。

于 2012-04-09T16:34:15.710 回答
1

没有任何内置方法允许这样做。您必须将信息存储到数据库中

于 2012-04-09T16:31:01.497 回答