2014-05-02 110 views
1

我尝试使用中间件的访问请求的IP地址,这里是我的示例代码,中间件:“WSGIRequest”对象有没有属性“得到”

def process_request(self, request): 
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') 
    if x_forwarded_for: 
     ip = x_forwarded_for.split(',')[-1].strip() 
    else: 
     ip = request.META.get('REMOTE_ADDR') --> I am getting the error here 
    return ip 

这里是我完整的错误跟踪:

Environment: 

Request Method: GET 
Request URL: http://localhost/admin/management/banipaddress/ 

Django Version: 1.6.4 
Python Version: 2.7.3 
Installed Applications: 
('django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'utils', 
'catalog', 
'preview', 
'cart', 
'management') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'custom.middleware.banipmiddleware.BanIpMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware') 


Traceback: 
File "/home/user/prodjango-env/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    201.     response = middleware_method(request, response) 
File "/home/user/prodjango-env/venv/local/lib/python2.7/site-packages/django/middleware/clickjacking.py" in process_response 
    30.   if response.get('X-Frame-Options', None) is not None: 

Exception Type: AttributeError at /admin/management/banipaddress/ 
Exception Value: 'WSGIRequest' object has no attribute 'get' 
+0

可以添加你的设置中间件类 –

回答

2

错误似乎是另一条线

File "/home/user/prodjango-env/venv/local/lib/python2.7/site-packages/django/middleware/clickjacking.py" in process_response 
    30.   if response.get('X-Frame-Options', None) is not None: 

clickjacking.py

不知道你的。有试图访问response.get(),这是不正确的。

+1

是的我想通了我的问题,当条件失败而不是'响应'我返回'请求'。所以我得到这个错误。 – dhana

相关问题