Making django server accessible in LAN

PythonDjango

Python Problem Overview


I have installed Django server and it can be accessed as below

http://localhost:8000/get-sms/
http://127.0.0.1:8000/get-sms/

suppose My IP is x.x.x.x .

From another PC under the same network when I do

my-ip:8000/get-sms/

but it is not working.

I can easily ping my IP with that computer.

Moreover, on my port 81, I have apache, which is easily accessible like below

http:///my-ip:81

What can be the issue? Do I need something extra in Django

Python Solutions


Solution 1 - Python

Running the Django Development Server
This is what you're looking for. To help you further, here is what you should do:

python manage.py runserver 0.0.0.0:8000

By the way, this may be a duplicate of this question.

Here is what the documentation says:

> Note that the default IP address, 127.0.0.1, is not accessible from > other machines on your network. To make your development server > viewable to other machines on the network, use its own IP address > (e.g. 192.168.2.1) or 0.0.0.0.

Solution 2 - Python

To add to @Depado 's answer you may need to add your LAN IP address to ALLOWED_HOSTS in the settings.py along with localhost. it would look like,

ALLOWED_HOSTS = ["localhost", "192.168.8.160"]

(if localhost isn't working use 127.0.0.1 as suggested by @Sabito 錆兎)

Solution 3 - Python

You can use https://ngrok.com/ this will expose your local web server to the internet/public.

Solution 4 - Python

Everywhere I looked, I kept seeing the answer to use the terminal command:

python manage.py runserver 0.0.0.0:8000

That works, but not if you want to run a remote debugger across the LAN (in my case VSCode), which launches the server automatically without a chance to modify the host ip address. However, I found a permanent solution:

Open: ./env/lib/python3.8/site-packages/django/core/management/commands/runserver.py

Search for: self.addr = ''

Replace '' with '0' and save. ('0' is shorthand for '0.0.0.0')

Now if you run: python manage.py runserver it is open to the local network, outputting: Starting development server at http://0:8000/

Importantly, the debugger now launches the server at http://0:8000/

If you haven't already, remember to add your client to allowed hosts in settings.py: ALLOWED_HOSTS = ["*"]

> Blockquote

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsumitView Question on Stackoverflow
Solution 1 - PythonDepadoView Answer on Stackoverflow
Solution 2 - PythonAchala DissanayakeView Answer on Stackoverflow
Solution 3 - PythonVenkatesh BachuView Answer on Stackoverflow
Solution 4 - PythonJoshua SView Answer on Stackoverflow