python - django 缓存统计在线人数,自写中间件总是提示:'ZxMiddleware' object is not callable
本文介绍了python - django 缓存统计在线人数,自写中间件总是提示:'ZxMiddleware' object is not callable的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
middle.py
from django.core.cache import cache
class ZxMiddleware(object):
def __init__(self, values):
self.online_ips = values
# def __call__(self, request):
# pass
def process_request(self, request):
if 'HTTP_X_FORWARDED_FOR' in request.META:
ip = request.META['HTTP_X_FORWARDED_FOR']
else:
ip = request.META['REMOTE_ADDR']
online_ips = cache.get("online_ips", [])
if online_ips:
online_ips = cache.get_many(online_ips).keys()
cache.set(ip, 0, 15 * 60)
if ip not in online_ips:
online_ips.append(ip)
cache.set("online_ips", online_ips)
在settings.py里
MIDDLEWARE = (
...其它的中间件
'appb.middle.ZxMiddleware',
)
views.py 这里用
def get_online_count():
online_ips = cache.get("online_ips", [])
if online_ips:
online_ips = cache.get_many(online_ips).keys()
return len(online_ips)
return 0
总是提示:
Traceback:
File "E:\python27\lib\site-packages\django\core\handlers\exception.py" in inner
41. response = get_response(request)
Exception Type: TypeError at /
Exception Value: 'ZxMiddleware' object is not callable
不知哪里有错?
解决方案
settings配置MIDDLEWARE_CLASSES,看你这里写的不对
另外你的__init__的values是干啥用的,在启用middleware的时候你在哪有传值?
这篇关于python - django 缓存统计在线人数,自写中间件总是提示:'ZxMiddleware' object is not callable的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文