在 django 4.1 应用程序中,我尝试在 .env 文件中添加几个允许的主机作为环境变量,如下所示 ->
DJANGO_ALLOWED_HOST=synapse-developmentcenter.am www.synapse-developmentcenter.am 127.0.0.1 localhost 0.0.0.0
但只有第一个域工作正常,并且在 echo $DJANGO_ALLOWED_HOST
之后仅显示 synapse-developmentcenter.am,这是我的 settings.py 行寻址 .env 文件 ->
ALLOWED_HOSTS = []
if not DEBUG:
ALLOWED_HOSTS += os.environ.get('DJANGO_ALLOWED_HOST').split(' ')
运行
cat .env
正确显示,当尝试再次导出时,只有第一个域到达那里,其余部分显示 -> bash: export:
127.0.0.1':不是有效的标识符`
我尝试将变量类型更改为此 ->
[DJANGO_ALLOWED_HOST=synapse-developmentcenter.am www.synapse-developmentcenter.am 127.0.0.1 localhost 0.0.0.0]
或
["DJANGO_ALLOWED_HOST=synapse-developmentcenter.am www.synapse-developmentcenter.am 127.0.0.1 localhost 0.0.0.0"]
即使这样 -> DJANGO_ALLOWED_HOST="synapse-developmentcenter.am www.synapse-developmentcenter.am 127.0.0.1 localhost 0.0.0.0"
但他们都不起作用
设置环境变量如下(两个示例)。
Windows、Powershell:
$Env:DJANGO_ALLOWED_HOSTS = "synapse-developmentcenter.am www.synapse-developmentcenter.am 127.0.0.1 localhost 0.0.0.0"
Ubuntu:
export DJANGO_ALLOWED_HOSTS="synapse-developmentcenter.am www.synapse-developmentcenter.am 127.0.0.1 localhost 0.0.0.0"
两种方式最终都会得到相同的列表:
import os
DJANGO_ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split(" ")
>> ['synapse-developmentcenter.am', 'www.synapse-developmentcenter.am', '127.0.0.1', 'localhost', '0.0.0.0']
您可以使用 validate_host
检查一切是否正常 from django.http.request import validate_host
allowed_hosts = [".a.com",".b.net"]
validate_host('host.b.net', allowed_hosts)