2010-06-16 111 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)