代码之家  ›  专栏  ›  技术社区  ›  Silver Light

django:在settings.py中获取远程IP地址

  •  1
  • Silver Light  · 技术社区  · 14 年前

    我要启用调试( DEBUG = True )仅当我的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 文件?

    3 回复  |  直到 14 年前
        1
  •  5
  •   zefciu    14 年前
        2
  •  3
  •   emre yılmaz    14 年前

    用这个。

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

    编辑:啊,我误解了这个话题。

        3
  •  0
  •   estin    14 年前

    在“设置”中尝试此操作。

    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()
    

    但最好使用内部存储器

    或使用环境变量

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