Python 改进代码:在中间件中单击时显示url的日期时间
我已经编写了一个中间件,我想就如何改进代码提出一些建议。我有一个模型,它在创建新实例时保存日期和url(在中间件中,因此每次访问url时) 像这样: 中间件:Python 改进代码:在中间件中单击时显示url的日期时间,python,django,url,django-models,Python,Django,Url,Django Models,我已经编写了一个中间件,我想就如何改进代码提出一些建议。我有一个模型,它在创建新实例时保存日期和url(在中间件中,因此每次访问url时) 像这样: 中间件: class GetUrlMiddleware(): def __init__(self, get_response): self.get_response = get_response def __call__(self, request): # before view 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的链接时添加一列?或者其他更好的方法
当然非常感谢您的帮助,提前谢谢 您可以使用替代实际模型来进行此操作,并结合HSET
和HGET
命令,您可以执行以下操作:
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)
你需要保存它吗?谢谢你的提示!但是,是的,我必须承认我从未与redis合作过,但我会检查一下。非常感谢我的朋友!您认为redis在性能和高流量方面会是一个更轻量级的解决方案吗?@Micromegas因为它是一个内存中的“数据库”,读写速度要比使用经典的RDBMS快得多。有关该主题的更多信息,请参阅