3

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

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

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

4

2 回答 2

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

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

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

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

from settings import *

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

于 2010-11-17T18:50:07.447 回答
3

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

import os

if os.environ['ENVIRONMENT'] == 'production':
    # Production
    DATABASE_ENGINE = 'mysql'
    DATABASE_NAME = ....
else:
    # Development
于 2010-11-17T18:38:33.790 回答