代码之家  ›  专栏  ›  技术社区  ›  Stuart Axon

基于IP或主机名的Django设置

  •  2
  • Stuart Axon  · 技术社区  · 15 年前

    我想在我的环境中有一些东西

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

    有没有一个简单的方法来获取ip或主机名-还有-这是一个坏主意吗?

    2 回复  |  直到 13 年前
        1
  •  12
  •   brianz    15 年前
    import socket
    socket.gethostbyname(socket.gethostname())
    

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

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

    __init__.py 有你所有的默认值。在顶部 qa.py ,以及任何其他设置文件,第一行有:

    from settings import *
    

    然后是该特定环境所需的任何重写。

        2
  •  3
  •   Matt Williamson    15 年前

    一些商店使用的一种方法是在每台机器上设置一个环境变量。也许叫做“环境”。在POSIX系统中,您可以执行以下操作 ENVIRONMENT=production 在用户的.profile文件中(对于每个shell和操作系统,这会略有不同)。然后进入 settings.py 你可以这样做:

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