我收到错误:
TypeError:object()不带参数
我的设置:
1)motion/middleware/CountVisits
中的中间件功能:
class Count(object):
def process_request(self,request):
if request.session['visits']:
request.session['visits']+=1
else:
request.session['visits']=1
设定:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'motion.middleware.CountVisits.Count',
]
答案 0 :(得分:2)
如果您使用的是Django 1.10,那么您需要更新自定义中间件。看这里:Upgrading pre-Django 1.10-style middleware。
您可以暂时使用mixin:
from django.utils.deprecation import MiddlewareMixin
class Count(MiddlewareMixin):
def process_request(self, request):
if request.session['visits']:
request.session['visits'] += 1
else:
request.session['visits'] = 1
答案 1 :(得分:1)
您没有__init__
。因此,您的课程不符合中间件签名。试试这个
class Count(object):
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def process_request(self, request):
if request.session['visits']:
request.session['visits']+ = 1
else:
request.session['visits'] = 1
https://docs.djangoproject.com/en/1.10/topics/http/middleware/#writing-your-own-middleware