2010-06-16 46 views
1

我想啓用調試(DEBUG = True)僅在我的Django項目運行在本地主機上。如何獲取settings.py中的用戶IP地址?我想是這樣工作的:Django:在settings.py中獲取遠程IP地址

#Debugging only on localhost 
if user_ip = '127.0.0.1': 
    DEBUG = True 
else: 
    DEBUG = False 

我如何將用戶的IP地址在user_ip變量中settings.py文件?

+0

zefciu的回答似乎符合這個要求;一個音符雖然 - 對我來說,似乎在你的問題你正在混合客戶端IP和IP,Django是必然的。 – Unreason 2010-06-16 07:42:19

+0

我的意思是客戶端IP。我們通常使用request.META ['REMOTE_ADDR'] – 2010-06-16 08:35:58

回答

3

使用本。

import socket 

print socket.gethostbyname_ex(socket.gethostname())[2] 

編輯:啊,我誤會了這個話題。

0

試試這個在您的settings.py

class LazyDebugSetting(object): 
    def __init__(self): 
     self.value = None 
    def __nonzero__(self): 
     if not self.value: 
      # as emre yilmaz say 
      user_ip = socket.gethostbyname_ex(socket.gethostname())[2] 
      self.value = user_ip == '127.0.0.1' 
     return self.value 
    __len__ = __nonzero__ 

DEBUG = LazyDebugSetting() 

但最好使用INTERNAL_IPS

或者使用環境變量

DEBUG = os.environ.get('DEVELOP_MODE', False)