CommandError: Bạn phải đặt settings.ALLOWED_HOSTS nếu DEBUG là False


109

Tôi sử dụng Django 1.6.5 trong txsite chương trình của mình với các cài đặt:

DEBUG = True

Tôi đặt DEBUG thành False, nhưng khi tôi đặt runserver, tôi gặp lỗi sau:

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

Tôi đã thử cài đặt ALLOWED_HOSTS = ['127.0.0.1', 'localhost']nhưng tôi gặp lỗi tương tự.

bất cứ ai biết làm thế nào để tìm ra nó?


Kiểm tra xem bên dưới bạn đã xác định lại DEBUG = True hay chưa. Nó có thể chỉ là một copypaste tồi. Tôi đến đây vì vô tình hủy DEBUG = False
Tms91

Câu trả lời:


153

Thử

ALLOWED_HOSTS = ['*']

Kém an toàn hơn nếu bạn không bị tắt tường lửa hoặc trên mạng LAN công cộng, nhưng đó là thứ tôi sử dụng và nó hoạt động.

CHỈNH SỬA: Thật thú vị, tôi đã cần thêm điều này vào một số dự án 1.8 của mình ngay cả khi DEBUG = True. Rất không chắc chắn tại sao.

CHỈNH SỬA: Điều này là do bản cập nhật bảo mật Django như đã đề cập trong nhận xét của tôi.


Tôi nên đặt mã ở đâu cho chính xác, để không lãng phí mã?
Малъ Скрылевъ

4
Làm grep ALLOWED_HOSTS . -ritrong thư mục head của dự án của bạn để tìm đúng tệp. Đó là settings.py trong trường hợp này, nhưng việc chuyển đổi tệp tin luôn là lời khuyên tốt.
Harald Nordgren

Tôi nên viết cái này trong tệp nào?
Mona Jalal,

@MonaJalal vui lòng xem bình luận của Harald.
Kye Russell

1
Theo [Django docs] [1], hành vi của ALLOWED_HOSTSđã được sửa đổi để giải quyết một cuộc tấn công DNS rebinding và điều này có lẽ là cần thiết trong tương lai. [1]: docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts
Kye Russell

55

Giải pháp của bạn có thể là thêm cả IP gốc và / hoặc tên máy chủ:

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

Điều kiện được đáp ứng là tiêu đề máy chủ lưu trữ (hoặc X-Forwarded-Hostnếu USE_X_FORWARDED_HOSTđược bật) phải khớp với một trong các giá trị trong ALLOWED_HOSTS.


2
Sau khi định cấu hình điều này, khởi động lại cũ tốt đã làm việc cho tôi ...
Razaman

28

Đảm bảo rằng nó không được xác định lại ở dưới trong settings.py. Cài đặt mặc định có:

ALLOWED_HOSTS = []


1
Thông báo lỗi dẫn người ta khỏi việc tìm kiếm điều này. Cảm ơn vì đăng.
scharfmn

15

Từ tài liệu: https://docs.djangoproject.com/en/1.10/ref/settings/

nếu DEBUG là False, bạn cũng cần đặt đúng cài đặt ALLOWED_HOSTS. Không làm như vậy sẽ dẫn đến tất cả các yêu cầu được trả lại là "Yêu cầu không hợp lệ (400)".

Và từ đây: https://docs.djangoproject.com/en/1.10/ref/settings/#std:setting-ALLOWED_HOSTS

Tôi đang sử dụng một cái gì đó như thế này:

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

4

Chỉ cần làm điều này:

  ALLOWED_HOSTS =  ['localhost', '127.0.0.1']

Nó sẽ thực hiện thủ thuật.


1

Nếu bạn làm việc PyCharm, hãy kiểm tra Environmental variablescủa bạn Django server. Bạn nên chỉ định module.settingstệp thích hợp


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.