ALLOWED_HOSTS
Djangoでは、Django WebサイトをホストできるサーバーのIPアドレスのリストを定義するには、環境変数を指定する必要があります。たとえば、
ALLOWED_HOSTS=['localhost', '127.0.0.1', '1.2.3.4']
つまり、Webサーバーにローカルにログインすると、Django Webサイトにローカルにアクセスできることを意味します。ただし、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]"
最初と3番目のケースでは、間違った構文が原因でbashでエラーが発生します。 2番目と4番目のケースでは、Djangoは変数をまったく理解していません。はい、コマンドで可能です。
export ALLOWED_HOSTS='localhost'
Djangoはこれを理解していますが、許可されたIPアドレスは1つしかないと仮定しています。
しかし、私はIPアドレスのリストをLinux環境変数に渡す方法が必要で、Djangoがこれを理解できると確信しています。しかし、どのように?
答え1
ALLOWED_HOSTS
助けを借りて、Djangoが(リストイン)変数を解析するための良い方法は、次のように定義することです。
ALLOWED_HOSTS=localhost,127.0.0.1,myotherhost.com,etc.net
それはすべてです。スペースはありません。たとえば、Pythonライブラリはenv
次のように解析できます。
allowed_hosts = env.list("ALLOWED_HOSTS");