改进代码:在中间件中单击时显示URL的日期时间

时间:2019-04-23 14:23:05

标签: python django url django-models

我已经编写了一个中间件,我想对如何改进代码提出一些建议。我有一个模型,可以在创建日期和URL的新实例时保存日期和URL(在中间件中,因此每次访问URL时)。

像这样:

中间件软件:

class GetUrlMiddleware():
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        # before view

     urltime = UrlTime.objects.create(associated_url=request.path)
     urltime.save()

        response = self.get_response(request)
        # after view

        return response

型号:

class UrlTime(models.Model):
    url_track_model = models.ForeignKey(UrlTrack, blank=True, null=True, on_delete=models.CASCADE)
    associated_url = models.CharField(blank=True, null= True, max_length=250)
    timestamp = models.DateTimeField('Url viewed on: ',default=datetime.now, blank=True)

现在,每次我单击链接时,都会使用url和日期创建一个新对象。一切正常。

我觉得这可以做得更好。例如,是否有一种方法,每当我单击带有URL的链接时都可以添加一列?还是其他更好的方法?

当然非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

You could use redis instead of an actual model for this and in conjunction with the HSET and HGET commands you could do the following:

from datetime import datetime

current_hits = redis_client.hget("links_hits", request.path) or []
current_hits.append(datetime.now())
redis_client.hset("links_hits", request.path, current_hits)