Django count对象调用
如何计算对象的调用数。例如:我有一个图像应用程序,我想向用户展示一张图片被调用的频率。与youtube上的videoviews一样,没有任何内置的方法允许这样做。您必须将信息存储到数据库中没有任何内置方法允许此操作。您必须将信息存储到数据库中您需要在表中存储一个计数,并在每次使用图像时递增该计数 首先,如果尚未有字段存储计数,请向模型中添加一个字段:Django count对象调用,django,Django,如何计算对象的调用数。例如:我有一个图像应用程序,我想向用户展示一张图片被调用的频率。与youtube上的videoviews一样,没有任何内置的方法允许这样做。您必须将信息存储到数据库中没有任何内置方法允许此操作。您必须将信息存储到数据库中您需要在表中存储一个计数,并在每次使用图像时递增该计数 首先,如果尚未有字段存储计数,请向模型中添加一个字段: class MyImageClass(models.Model): ... views = models.PositiveInte
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 %}">
你一定要做一些优化,考虑线程安全问题,但这足以让你滚滚。
你需要在表中存储一个计数,每次使用图像时都要增加它。
首先,如果尚未有字段存储计数,请向模型中添加一个字段: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 %}">
<>你一定要做一些优化,考虑到线程安全问题,但这足以让你滚滚。