Настройки Django на основе IP или имени хоста
Вопрос
Я хотел бы иметь что-то в моих настройках, как
if ip in DEV_IPS:
SOMESETTING = 'foo'
else:
SOMESETTING = 'bar'
Есть ли простой способ получить IP или имя хоста - также - это плохое представление?
Решение
import socket
socket.gethostbyname(socket.gethostname())
Тем не менее, я бы порекомендовал против этого и вместо этого поддерживать несколько файлов настроек для каждой среды, с которым вы работаете.
settings/__init__.py
settings/qa.py
settings/production.py
__init__.py
имеет все ваши по умолчанию. В верхней части qa.py
, и любой другой файл настроек, первая строка имеет:
from settings import *
сопровождаемый любыми переопределениями, необходимыми для этой конкретной среды.
Другие советы
Одним из методов, которые используются некоторые магазины, чтобы иметь переменную среды на каждом компьютере. Может быть, называется «окружающей средой». В системах POSIX вы можете сделать что-то вроде ENVIRONMENT=production
В файле пользователя. Профильный файл (это будет немного отличается для каждой оболочки и ОС). Затем в settings.py
Вы можете сделать что-то вроде этого:
import os
if os.environ['ENVIRONMENT'] == 'production':
# Production
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = ....
else:
# Development