基于IP或主机名的Django设置

时间:2010-11-17 18:24:29

标签: python django settings ip hostname

我想在我的设置中有一些东西,比如

if ip in DEV_IPS:
   SOMESETTING = 'foo'
else:
   SOMESETTING = 'bar'

是否有一种简单的方法来获取ip或主机名 - 同样 - 这是一个坏主意吗?

2 个答案:

答案 0 :(得分:12)

import socket
socket.gethostbyname(socket.gethostname())

但是,我建议不要这样做,而是为您正在使用的每个环境维护多个设置文件。

settings/__init__.py
settings/qa.py 
settings/production.py

__init__.py拥有您的所有默认值。在qa.py和任何其他设置文件的顶部,第一行包含:

from settings import *

然后是该特定环境所需的任何覆盖。

答案 1 :(得分:3)

某些商店使用的一种方法是在每台机器上设置环境变量。也许叫做“环境”。在POSIX系统中,您可以在用户的​​.profile文件中执行类似ENVIRONMENT=production的操作(对于每个shell和操作系统,这将略有不同)。然后在settings.py你可以这样做:

import os

if os.environ['ENVIRONMENT'] == 'production':
    # Production
    DATABASE_ENGINE = 'mysql'
    DATABASE_NAME = ....
else:
    # Development