如何将多个域添加到 DJANGO_ALLOWED_HOSTS 作为环境变量

问题描述 投票:0回答:2

在 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"
但他们都不起作用

python django environment-variables
2个回答
2
投票

设置环境变量如下(两个示例)。

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']

0
投票

您可以使用 validate_host

检查一切是否正常
    from django.http.request import validate_host
    allowed_hosts = [".a.com",".b.net"]
    validate_host('host.b.net', allowed_hosts)
© www.soinside.com 2019 - 2024. All rights reserved.