Executando verificação de segurança...
1

AJUDA: PYTHON - DJANGO allowed_hosts em faixas de IP diferentes

Olá galera! Gostaria de validar com vocês um problema que estou tendo, se é um problema e formas de solucioná-lo.

Iniciei um projeto django muito básico, para uma POC de um modelo de Intranet.

Em settings.py descobri logo que não existe uma forma de setar * ou informar a faixa de IP permitida no array 'allowed_hosts'.

Outro fator é que de 4 máquinas que estão conectadas na mesma rede, duas estão em uma faixa ex:'192.168.1.96' e duas outras em outra faixa ex:'192.168.3.29'.

Pesquisei um pouco sobre porém sem muito sucesso e por ser uma POC apenas não gostaria de demandar muito tempo nesse ponto.

Se alguém tiver alguma ideia do caminho mais rápido ficarei muito grato!

Valeu, tenham um ótimo dia!

Carregando publicação patrocinada...
1

Não ficou claro o que você está tentando fazer, na doc (https://docs.djangoproject.com/en/4.1/ref/settings/#allowed-hosts) esse campo define quais os hosts que o django vai aceitar pra responder pela API, o que deve ir ai é o IP/domínio (acho que com porta, não lembro agora) que as requisições serão realizadas.

Como é uma lista, você pode colocar vários endereços: ['192.168.1.96', 'poc.api']

Em última instância pode usar ['*'], porém não é recomendado fora de ambiente de desenvolvimento (na doc acima explca o porque)

1

Samuel, exato, no funcionamento dele eu informo por exemplo minha máquina
['localhost','127.0.0.1']
e informo os ip's de outras máquinas na mesma rede
['192.168.1.96','192.168.1.98'....]

Porém tenho duas máquinas que estão conectadas na mesma rede mas em outra faixa de ip, então:
['192.168.1.96','192.168.1.98','192.168.3.29'....]

A máquina que está com na faixa 3.29 não consegue acessar, independente de eu executar o servidor:
localhost:porta
ou
192.168.1.96:porta

2
2

Complementando a resposta acima, dá uma checada na documentação sobre o allowed_hosts (infelizmente não está disponível em português):

https://docs.djangoproject.com/pt-br/4.1/ref/settings/#std:setting-ALLOWED_HOSTS

Ele serve para o Django aceitar somente requisições que contenham o endereço permitido no campo Host, por exemplo, se allowed_hosts = ['www.exemplo.com'], ele vai permitir requisições que contenham www.exemplo.com e rejeitar requisições que contenham exemplo.com ou subdominio.exemplo.com

Nesse seu caso, allowed_hosts seria somente o seu endereço IP da rede interna. Ele não serve para filtrar requisições baseado no IP dos clientes, como você está tentando fazer.

1
1
1

Um outra forma é com o ngrok. Esta opção ta da acesso externo caso precise.

Site oficial: https://ngrok.com/

Ao fazer o cadastro e download do arquivo, na página inicial ao fazer login tem um tutorial rapido de como configurar.

Utilizando com Django:
no terminal digite:

ngrok http 8000

no terminal irá aparecer algo assim:

Web Interface http://127.0.0.1:4040 Forwarding https://2d51-45-185-1-247.ngrok-free.app -> http://localhost:8000

No settings.py
ALLOWED_HOSTS = ['2d51-45-185-1-247.ngrok-free.app']

python manage.py runserver

acesse: https://2d51-45-185-1-247.ngrok-free.app

Ao entrar pela primeira vez irá aparecer algumas informaçoões e o botao visit site

Espero que entenda, eu nunca escrevi um tutorial ou algo do tipo na internet. rsrs