在 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");