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?

Rancho
sumber
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.

Kye Russell
sumber
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.

yeaske
sumber
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 = []

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

Dari dokumentasi: https://docs.djangoproject.com/en/1.10/ref/settings/

jika DEBUG adalah False, Anda juga perlu menyetel pengaturan ALLOWED_HOSTS dengan benar. Gagal melakukannya akan mengakibatkan semua permintaan dikembalikan sebagai "Permintaan Buruk (400)".

Dan dari sini: https://docs.djangoproject.com/en/1.10/ref/settings/#std:setting-ALLOWED_HOSTS

Saya menggunakan sesuatu seperti ini:

ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'www.mysite.com']
Memória de Cálculo
sumber
4

Lakukan saja ini:

  ALLOWED_HOSTS =  ['localhost', '127.0.0.1']

Ini akan berhasil.

Fahadi Muhumuza
sumber
1

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

Daniel Chepenko
sumber
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.

srimanivinay.dll
sumber
-8

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

pengguna3797826
sumber
Jika berkomentar, bagaimana mengetahui ke mana harus mengarahkan?
cdrrr