Настройки Django на основе IP или имени хоста - PullRequest
2 голосов
/ 17 ноября 2010

Я бы хотел, чтобы в моих настройках было что-то вроде

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

Есть ли простой способ получить ip или имя хоста - также - это плохая идея?

Ответы [ 2 ]

12 голосов
/ 17 ноября 2010
import socket
socket.gethostbyname(socket.gethostname())

Однако я рекомендую против этого и вместо этого сохраняю несколько файлов настроек для каждой среды, с которой вы работаете.

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

__init__.py имеет все ваши значения по умолчанию.В верхней части qa.py и любого другого файла настроек первая строка содержит:

from settings import *

с последующими переопределениями, необходимыми для этой конкретной среды.

3 голосов
/ 17 ноября 2010

Один из методов, который используется в некоторых магазинах, заключается в установке переменной среды на каждом компьютере.Может быть, называется "среда".В системах POSIX вы можете сделать что-то вроде ENVIRONMENT=production в пользовательском файле .profile (это будет немного отличаться для каждой оболочки и ОС).Тогда в settings.py вы можете сделать что-то вроде этого:

import os

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