Вопрос

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

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top