【发布时间】:2019-09-02 08:18:37
【问题描述】:
我是 django 的初学者。
在我的网站上,我想创建一个库,允许下载我自己创建的可执行文件。我想计算每个文件被下载了多少次。
我想使用中间件,因为我知道我可以制作一个中间件来计算并显示页面被查看的次数:
def stats_middleware (get_response):
def middleware (request):
try :
p = Stat.objects.get(url = request.path)
p.views_number = F('views_number')+1
p.save
except Stat.DoesNotExist :
p = Stat.objects.create(url= request.path)
response = get_response(request)
response.content += bytes(
"cette page a été vue {} fois.".format(p.views_number),
"utf8"
)
return response
return middleware
我想如果我设法在新页面中打开下载,我可以计算它出现的次数,从而计算文件的下载次数,但我没有设法在另一个选项卡中打开下载。
我该怎么做?
【问题讨论】:
-
您如何为您的 django 网站提供服务?通常静态文件是served using server like Apache or Nginx in production,所以django网站甚至从来没有得到静态文件的请求。
-
以这种方式修改响应内容无论如何都是一个糟糕的主意 - 响应的内容不一定是纯文本 - 它可以是 HTML(然后将无效),XML(然后将无效且不可用- 没有解析器会接受它)、JSON(同上)、任何其他定义的文本格式(csv、yaml 等)也会变得不可用,或者任何二进制格式都会被完全破坏。即使您的响应碰巧是纯文本文档,您仍然会破坏 HTTP“内容长度”响应标头...
标签: python django python-3.6 middleware django-middleware