ALLOWED_HOSTS
Django에서는 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
ALLOWED_HOSTS
도움을 받아 Django가 (목록인) 변수를 구문 분석할 수 있는 좋은 방법은 다음과 같이 정의하는 것임을 알았습니다 .
ALLOWED_HOSTS=localhost,127.0.0.1,myotherhost.com,etc.net
그게 다입니다. 공백이 없습니다. 그러면 예를 들어 Python 라이브러리는 env
이를 다음과 같이 구문 분석할 수 있습니다.
allowed_hosts = env.list("ALLOWED_HOSTS");