2014-05-02 50 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

相關問題