【发布时间】:2011-05-11 14:26:34
【问题描述】:
我想在我的设置中添加一些东西,例如
if ip in DEV_IPS:
SOMESETTING = 'foo'
else:
SOMESETTING = 'bar'
有没有一种简单的方法来获取 ip 或主机名 - 也是 - 这是一个坏主意吗?
【问题讨论】:
标签: python django settings ip hostname
我想在我的设置中添加一些东西,例如
if ip in DEV_IPS:
SOMESETTING = 'foo'
else:
SOMESETTING = 'bar'
有没有一种简单的方法来获取 ip 或主机名 - 也是 - 这是一个坏主意吗?
【问题讨论】:
标签: python django settings ip hostname
import socket
socket.gethostbyname(socket.gethostname())
但是,我建议不要这样做,而是为您正在使用的每个环境维护多个设置文件。
settings/__init__.py
settings/qa.py
settings/production.py
__init__.py 拥有你所有的默认值。在qa.py 和任何其他设置文件的顶部,第一行有:
from settings import *
随后是该特定环境所需的任何覆盖。
【讨论】:
一些商店使用的一种方法是在每台机器上设置一个环境变量。也许叫做“环境”。在 POSIX 系统中,您可以在用户的 .profile 文件中执行类似 ENVIRONMENT=production 的操作(对于每个 shell 和操作系统,这将略有不同)。然后在settings.py 你可以这样做:
import os
if os.environ['ENVIRONMENT'] == 'production':
# Production
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = ....
else:
# Development
【讨论】: