django-1.6을 처음 사용합니다. 로 django 서버를 실행하면 DEBUG = True
완벽하게 실행됩니다. 내가 변경할 때 DEBUG
에 False
설정 파일에, 서버는 중지하고 프롬프트 명령에 다음과 같은 오류를 제공합니다 :
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
내가 변경 한 후 ALLOWED_HOSTS
에 ["http://127.0.0.1:8000",]
, 브라우저에서 나는 오류가 발생합니다 :
Bad Request (400)
디버그 모드없이 장고를 실행할 수 있습니까?
답변
ALLOWED_HOSTS
목록은 완전한 포함해야 호스트 이름 , 하지 URL을. 포트와 프로토콜을 제외하십시오. 를 사용 하는 경우 목록에도 127.0.0.1
추가 localhost
합니다.
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
모든 호스트 *
를 일치시키는 데 사용할 수도 있습니다 .
ALLOWED_HOSTS = ['*']
문서 인용하기 :
이 목록의 값은 정규화 된 이름 (예 🙂 일 수 있으며
'www.example.com'
,이 경우 요청Host
헤더 와 정확히 일치합니다 (대소 문자 구분, 포트 제외). : 마침표로 시작하는 값은 하위 도메인 와일드 카드로 사용할 수'.example.com'
일치example.com
,www.example.com
, 그리고 다른 하위 도메인example.com
. 의 가치는'*'
무엇이든 일치합니다. 이 경우Host
헤더에 대한 자체 유효성 검사를 제공해야합니다 (미들웨어 일 수도 있습니다.이 경우이 미들웨어가에 먼저 나열되어야 함MIDDLEWARE_CLASSES
).
대담한 강조 광산 .
상태 400 응답은 호스트 헤더가 해당 목록의 값과 일치하지 않을 때 SuspiciousOperation
예외 가 발생 하기 때문 입니다.
답변
나 USE_X_FORWARDED_HOST
에게 true로 설정하지 않으면이 오류가 발생했습니다 . 문서에서 :
이 헤더를 설정하는 프록시가 사용중인 경우에만 활성화해야합니다.
내 호스팅 서비스 는 설명서 에이 설정을 사용해야 한다고 명시 적으로 기록했으며 잊어 버린 경우 400 오류가 발생합니다.
답변
나는 같은 문제가 있었고 ALLOWED_HOSTS = ['*']
정적 이미지의 문제를 설정 하고 해결하여 환경 구성에서 가상 경로를 다음과 같이 변경해야합니다.
가상 경로
디렉토리
/ static / / opt / python / current / app / yourpj / static /
/ media / / opt / python / current / app / Nuevo / media /
도움이 되길 바랍니다.
PD : 나쁜 영어로 죄송합니다.
답변
나는 같은 문제가 있었고 어떤 대답도 내 문제를 해결하지 못했습니다. 이와 같은 상황을 해결하기 위해 다음 구성을 settings.py
임시 에 추가하여 로깅을 활성화하는 것이 좋습니다
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': '/tmp/debug.log', }, }, 'loggers': { 'django': { 'handlers': ['file'], 'level': 'DEBUG', 'propagate': True, }, }, }
그리고 시도하십시오 tail -f /tmp/debug.log
. 문제를 볼 때 맹목적인 디버깅보다 훨씬 쉽게 처리 할 수 있습니다.
내 문제는
잘못된 HTTP_HOST 헤더 : ‘pt_web : 8000’ 제공된 도메인 이름이 RFC 1034/1035에 따라 유효하지 않습니다.
그리고 추가하여 해결 proxy_set_header Host $host;
Nginx의 설정 파일에 의해 포트 포워딩을 가능하게 USE_X_FORWARDED_PORT = True
에 settings.py
(내 경우에는 내가 포트에서의 Nginx에 요청 말을 들었 때문이다 8080
과에 전달 guni
포트8000
답변
127.0.0.1에서 이미 xampp를, 127.0.1.1에서 django를 사용하고 호스트를 계속 추가하려고 했으므로
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'www.yourdomain.com', '*', '127.0.1.1']
그리고 같은 오류 또는 (400) 잘못된 요청이 있습니다.
그래서 URL을 127.0.1.1 : (사용 된 포트) / 프로젝트 및 voila로 변경하십시오!
Linux에서 bitnami django stack 2.2.3-1을 사용하므로 django가 사용중인 포트를 확인할 수 있습니다. 오류가있는 경우 (400 나쁜 요청) 다른 가상 네트워크에서 django를 추측합니다.. 행운을 빕니다
답변
함께 DEBUG = False
하면 설정 파일에, 당신은 또한 ALLOWED_HOST 목록을 설정해야합니다. 포함 해보십시오ALLOWED_HOST = ['127.0.0.1', 'localhost', 'www.yourdomain.com']
그렇지 않으면 django로부터 잘못된 요청 (400) 오류가 수신 될 수 있습니다.
답변
다음과 같이-안전하지 않은 상태로 서버를 실행하십시오.
python manage.py runserver-안전하지 않은