如何计算对象的调用次数。例如:我有一个图像应用程序,我想向用户展示一张图片被调用的频率。喜欢 youtube 上的 videoviews
问问题
145 次
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 回答