CommandError: você deve definir settings.ALLOWED_HOSTS se DEBUG for False

109

Eu uso Django 1.6.5 no meu txsite do programa com as configurações:

DEBUG = True

Defino DEBUG como False, mas quando runserverrecebo o seguinte erro:

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

Tentei configurar ALLOWED_HOSTS = ['127.0.0.1', 'localhost']mas recebo o mesmo erro.

alguém sabe como descobrir?

Rancho
fonte
Verifique se abaixo você definiu novamente DEBUG = True. Pode ser apenas um copypaste ruim. Eu cheguei aqui porque cancelei DEBUG = False por acidente
Tms91

Respostas:

153

Experimentar

ALLOWED_HOSTS = ['*']

Menos seguro se você não estiver protegido por firewall ou em uma LAN pública, mas é o que eu uso e funciona.

EDIT: Curiosamente, tenho necessidade de adicionar isso a alguns dos meus projetos 1.8, mesmo quando DEBUG = True. Muito inseguro por quê.

EDIT: Isso é devido a uma atualização de segurança do Django, conforme mencionado em meu comentário.

Kye Russell
fonte
Onde devo colocar o código corretamente, para não desperdiçá-lo?
Малъ Скрылевъ
4
Faça grep ALLOWED_HOSTS . -rina pasta head do seu projeto para encontrar o arquivo correto. Nesse caso, é settings.py, mas grepping é sempre um bom conselho.
Harald Nordgren
em qual arquivo devo escrever isso?
Mona Jalal
@MonaJalal veja o comentário de Harald.
Kye Russell
1
De acordo com [Django docs] [1], o comportamento do ALLOWED_HOSTSfoi modificado para lidar com um ataque de religação de DNS e isso provavelmente será necessário daqui para frente. [1]: docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts
Kye Russell
55

Sua solução pode ser adicionar o IP original e / ou nome de host também:

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

A condição a ser satisfeita é que o cabeçalho do host (ou X-Forwarded-Hostse USE_X_FORWARDED_HOSTestiver ativado) deve corresponder a um dos valores em ALLOWED_HOSTS.

sim
fonte
2
Depois de configurar isso, a boa e velha reinicialização funcionou para mim ...
Razaman
28

Certifique-se de que ele não seja redefinido mais abaixo em settings.py. As configurações padrão têm:

ALLOWED_HOSTS = []

Matt
fonte
1
A mensagem de erro desvia a pessoa de procurar por isso. Obrigado por publicar.
scharfmn
15

Da documentação: https://docs.djangoproject.com/en/1.10/ref/settings/

se DEBUG for False, você também precisará definir corretamente a configuração ALLOWED_HOSTS. Se não o fizer, todos os pedidos serão devolvidos como “Pedido inválido (400)”.

E daqui: https://docs.djangoproject.com/en/1.10/ref/settings/#std:setting-ALLOWED_HOSTS

Estou usando algo assim:

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

Basta fazer isso:

  ALLOWED_HOSTS =  ['localhost', '127.0.0.1']

Isso vai resolver o problema.

Fahadi Muhumuza
fonte
1

Se você trabalha em PyCharm, verifique o Environmental variablespara o seu Django server. Você deve especificar o module.settingsarquivo adequado

Daniel Chepenko
fonte
-8

Basta comentar a linha: ALLOWED_HOSTS = [...]

user3797826
fonte
Se comentar, como saberá para onde redirecionar?
cdrrr