IP 주소 목록을 단일 로컬 변수로 내보내는 방법은 무엇입니까?

IP 주소 목록을 단일 로컬 변수로 내보내는 방법은 무엇입니까?

ALLOWED_HOSTSDjango에서는 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"); 

관련 정보