CommandError: Anda harus menyetel settings.ALLOWED_HOSTS jika DEBUG adalah False


109

Saya menggunakan Django 1.6.5 dalam program saya txsite dengan pengaturan:

DEBUG = True

Saya menyetel DEBUG ke False, tetapi ketika saya runserver, saya mendapatkan kesalahan berikut:

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

Saya mencoba mengatur ALLOWED_HOSTS = ['127.0.0.1', 'localhost']tetapi saya mendapatkan kesalahan yang sama.

ada yang tahu bagaimana mengetahuinya?


Periksa apakah di bawah Anda mendefinisikan lagi DEBUG = True. Ini bisa jadi hanya pasta yang buruk. Saya sampai di sini karena saya membatalkan DEBUG = False secara tidak sengaja
Tms91

Jawaban:


154

Mencoba

ALLOWED_HOSTS = ['*']

Kurang aman jika Anda tidak menggunakan firewall atau LAN publik, tetapi itulah yang saya gunakan dan berfungsi.

EDIT: Cukup menarik, saya perlu menambahkan ini ke beberapa proyek 1,8 saya bahkan ketika DEBUG = True. Sangat tidak yakin mengapa.

EDIT: Ini karena pembaruan keamanan Django seperti yang disebutkan dalam komentar saya.


Di mana saya harus meletakkan kode dengan benar, agar tidak menyia-nyiakan kode?
Малъ Скрылевъ

4
Lakukan grep ALLOWED_HOSTS . -ridi folder head proyek Anda untuk menemukan file yang benar. Ini settings.py dalam kasus ini, tetapi grepping selalu merupakan nasihat yang baik.
Harald Nordgren

di file mana saya harus menulis ini?
Mona Jalal

@MonaJalal silakan lihat komentar Harald.
Kye Russell

1
Menurut [Django docs] [1], perilaku dari ALLOWED_HOSTStelah dimodifikasi untuk mengatasi serangan rebinding DNS dan ini mungkin diperlukan untuk selanjutnya. [1]: docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts
Kye Russell

55

Solusi Anda mungkin dengan menambahkan IP asli dan / atau nama host juga:

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

Kondisi yang harus dipenuhi adalah bahwa header host (atau X-Forwarded-Hostjika USE_X_FORWARDED_HOSTdiaktifkan) harus cocok dengan salah satu nilai di ALLOWED_HOSTS.


2
Setelah mengkonfigurasi ini, restart lama yang baik bekerja untuk saya ...
Razaman

28

Pastikan itu tidak didefinisikan ulang lagi di bagian bawah settings.py Anda. Pengaturan default memiliki:

ALLOWED_HOSTS = []


1
Pesan kesalahan membuat orang menjauh dari mencari ini. Terima kasih telah memposting.
scharfmn



1

Jika Anda bekerja di PyCharm, periksa Environmental variablesuntuk Anda Django server. Anda harus menentukan module.settingsfile yang tepat


0

Mencoba

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

ALLOWED_HOSTS = ['*']

Nilai '*' akan cocok dengan apa pun; dalam hal ini Anda bertanggung jawab untuk memberikan validasi Anda sendiri atas header Host.


-8

Cukup komentari baris ini: ALLOWED_HOSTS = [...]


Jika berkomentar, bagaimana mengetahui ke mana harus mengarahkan?
cdrrr
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.