我想在我的设置中有一些东西,比如
if ip in DEV_IPS:
SOMESETTING = 'foo'
else:
SOMESETTING = 'bar'
是否有一种简单的方法来获取ip或主机名 - 同样 - 这是一个坏主意吗?
答案 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