基于IP或主机名的Django设置

Stu*_*xon 2 python django ip settings hostname

我想在我的设置中有一些东西,比如

if ip in DEV_IPS:
   SOMESETTING = 'foo'
else:
   SOMESETTING = 'bar'
Run Code Online (Sandbox Code Playgroud)

有一个简单的方法来获取IP或主机名 - 也 - 这是一个坏主意?

bri*_*anz 12

import socket
socket.gethostbyname(socket.gethostname())
Run Code Online (Sandbox Code Playgroud)

但是,我建议不要这样做,而是为您正在使用的每个环境维护多个设置文件.

settings/__init__.py
settings/qa.py 
settings/production.py
Run Code Online (Sandbox Code Playgroud)

__init__.py拥有所有默认值.在顶部qa.py和任何其他设置文件中,第一行包含:

from settings import *
Run Code Online (Sandbox Code Playgroud)

然后是该特定环境所需的任何覆盖.

  • 您可以在bash中使用"export DJANGO_SETTINGS_MODULE = settings.qa"来选择要使用的设置文件 (2认同)