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

2 投票
3 回答
2849 浏览
提问于 2025-04-16 00:02

我想在我的Django项目中开启调试模式(DEBUG = True),但只有在它运行在本地的时候才这样做。我该如何在settings.py文件中获取用户的IP地址呢?我希望能有类似下面的代码可以用:

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

我该如何把用户的IP地址放到settings.py文件中的user_ip变量里呢?

3 个回答

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

用这个。

import socket

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

编辑:哦,我之前误解了这个话题。

5

也许你只需要指定一些内部IP地址就可以了。你可以在这里查看相关信息:https://docs.djangoproject.com/en/dev/ref/settings/#internal-ips

撰写回答