如何将 IP 地址列表导出为单个局部变量?

如何将 IP 地址列表导出为单个局部变量?

在 Django 中,必须指定环境变量ALLOWED_HOSTS来定义允许托管 Django 网站的服务器 IP 地址列表。例如:

ALLOWED_HOSTS=['localhost', '127.0.0.1', '1.2.3.4'],这意味着如果我在本地登录我的网络服务器,那么我可以在本地访问 Django 网站。但在全球范围内,也可以访问 1.2.3.4 的服务器。开发人员经常在环境文件中指定此环境变量,例如.env,然后由 Django 解析。

就我而言,我必须在 Ubuntu Linux 服务器上设置此环境变量,例如在本地;它看起来像这样:

export ALLOWED_HOSTS=['localhost', '127.0.0.1', '1.2.3.4']

现在,这个命令不起作用了。该命令也不起作用

export ALLOWED_HOSTS="['localhost', '127.0.0.1', '1.2.3.4']"

或者

export ALLOWED_HOSTS='localhost', '127.0.0.1', '1.2.3.4'

或者

export ALLOWED_HOSTS="[localhost, 127.0.0.1, '1.2.3.4]"

在第一种和第三种情况下,由于语法不正确,bash 会出现错误。在第二种和第四种情况下,Django 根本无法理解该变量。是的,可以通过命令

export ALLOWED_HOSTS='localhost'

Django 可以理解这一点,但这假设只有一个允许的 IP 地址。

但我坚信,一定可以以某种方式将 IP 地址列表作为 Linux 环境变量传递,Django 可以理解它。但如何呢?

答案1

在一些帮助下,我发现 Django 能够解析像 之类的变量ALLOWED_HOSTS(该变量是一个列表)的一种好方法是将其定义为,例如

ALLOWED_HOSTS=localhost,127.0.0.1,myotherhost.com,etc.net

就是这样,没有空格。然后,例如,Python 库env将能够像这样解析它

allowed_hosts = env.list("ALLOWED_HOSTS"); 

相关内容