CommandError: คุณต้องตั้งค่า ALLOWED_HOSTS ถ้า DEBUG เป็น False


112

ฉันใช้ Django 1.6.5 ในโปรแกรม txsite ด้วยการตั้งค่า:

DEBUG = True

ฉันตั้งค่า DEBUG เป็น False แต่เมื่อrunserverฉันได้รับข้อผิดพลาดต่อไปนี้:

CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False

ฉันลองตั้งค่าALLOWED_HOSTS = ['127.0.0.1', 'localhost']แต่ได้รับข้อผิดพลาดเดียวกัน

ใครรู้วิธีคิดออก?


ตรวจสอบว่าด้านล่างที่คุณกำหนดไว้อีกหรือไม่ DEBUG = True อาจเป็นเพียงของลอกเลียนแบบที่ไม่ดี ฉันมาถึงที่นี่เพราะฉันยกเลิก DEBUG = False โดยบังเอิญ
Tms91

คำตอบ:


161

ลอง

ALLOWED_HOSTS = ['*']

ปลอดภัยน้อยกว่าหากคุณไม่ได้ปิดไฟหรืออยู่บน LAN สาธารณะ แต่เป็นสิ่งที่ฉันใช้และได้ผล

แก้ไข:น่าสนใจมากพอที่ฉันต้องการเพิ่มสิ่งนี้ในโครงการ 1.8 สองสามโครงการของฉันแม้ว่าในเวลาDEBUG = Trueนั้น ไม่แน่ใจมากว่าทำไม

แก้ไข:นี่เป็นเพราะการอัปเดตความปลอดภัย Django ตามที่กล่าวไว้ในความคิดเห็นของฉัน


ฉันควรใส่รหัสให้ถูกต้องตรงไหนเพื่อไม่ให้โค้ดเสียไป
МалъСкрылевъ

4
ทำgrep ALLOWED_HOSTS . -riในโฟลเดอร์ส่วนหัวของโปรเจ็กต์เพื่อค้นหาไฟล์ที่ถูกต้อง ในกรณีนี้คือ settings.py แต่ grepping เป็นคำแนะนำที่ดีเสมอ
Harald Nordgren

ฉันควรเขียนไฟล์นี้ในไฟล์ใด
Mona Jalal

@MonaJalal โปรดดูความคิดเห็นของ Harald
Kye Russell

1
จากข้อมูลของ [Django docs] [1] พฤติกรรมของALLOWED_HOSTSได้รับการแก้ไขเพื่อจัดการกับการโจมตี DNS rebinding และสิ่งนี้อาจจำเป็นต่อไป [1]: docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts
Kye Russell

56

วิธีแก้ปัญหาของคุณอาจเป็นการเพิ่ม IP เดิมและ / หรือชื่อโฮสต์ด้วย:

ALLOWED_HOSTS = ['localhost', '127.0.0.1', '111.222.333.444', 'mywebsite.com']

เงื่อนไขที่จะได้รับความพึงพอใจคือส่วนหัวของโฮสต์ (หรือX-Forwarded-Hostถ้าUSE_X_FORWARDED_HOSTมีการเปิดใช้งาน) ALLOWED_HOSTSควรจะตรงกับค่าใดค่าหนึ่งใน


2
หลังจากกำหนดค่าสิ่งนี้การรีสตาร์ทเครื่องเก่าที่ดีใช้ได้กับฉัน ...
Razaman

28

ตรวจสอบให้แน่ใจว่าไม่มีการกำหนดนิยามใหม่ให้ต่ำลงไปอีกใน settings.py ของคุณ การตั้งค่าเริ่มต้นมี:

ALLOWED_HOSTS = []


1
ข้อความแสดงข้อผิดพลาดนำไปสู่การค้นหาสิ่งนี้ ขอบคุณสำหรับการโพสต์
scharfmn

15

จากเอกสาร: https://docs.djangoproject.com/en/1.10/ref/settings/

หากการแก้ปัญหาเป็นเท็จคุณต้องตั้งค่า ALLOWED_HOSTS ให้ถูกต้อง หากไม่ทำเช่นนั้นจะส่งผลให้คำขอทั้งหมดถูกส่งกลับเป็น "คำขอที่ไม่ถูกต้อง (400)"

และจากที่นี่: https://docs.djangoproject.com/en/1.10/ref/settings/#std:setting-ALLOWED_HOSTS

ฉันกำลังใช้สิ่งนี้:

ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'www.mysite.com']


1

ถ้าคุณทำงานในPyCharmตรวจสอบของคุณEnvironmental variables Django serverคุณควรระบุmodule.settingsไฟล์ที่เหมาะสม


0

ลอง

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['*']

ค่า "*" จะตรงกับค่าใดก็ได้ ในกรณีนี้คุณต้องรับผิดชอบในการตรวจสอบความถูกต้องของส่วนหัวโฮสต์ของคุณเอง


-8

เพียงแค่แสดงความคิดเห็นในบรรทัด: ALLOWED_HOSTS = [... ]


หากแสดงความคิดเห็นจะทราบได้อย่างไรว่าจะเปลี่ยนเส้นทางไปที่ใด
cdrrr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.