使Django服务器在局域网中可访问

81 投票
4 回答
63922 浏览
提问于 2025-04-17 20:35

我已经安装了Django服务器,可以通过下面的方式访问它。

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

假设我的IP地址是x.x.x.x

在同一个网络下的另一台电脑上,当我执行

my-ip:8000/get-sms/

但是它没有工作。

我可以很容易地在那台电脑上ping我的IP地址。

而且,我的81端口上有Apache服务器,可以像下面这样轻松访问。

http:///my-ip:81

这可能是什么问题呢?我在Django中需要额外做些什么吗?

4 个回答

1

我到处查资料,发现大家都在说可以用这个终端命令:

python manage.py runserver 0.0.0.0:8000

这个方法确实有效,但如果你想在局域网中使用远程调试器(比如我用的VSCode),它会自动启动服务器,这样你就没机会修改主机的IP地址。不过,我找到了一种永久的解决办法:

打开这个文件:./env/lib/python3.8/site-packages/django/core/management/commands/runserver.py

搜索:self.addr = ''

''替换成'0',然后保存。('0''0.0.0.0'的简写)

现在如果你运行:python manage.py runserver,它就会对本地网络开放,输出:Starting development server at http://0:8000/

重要的是,调试器现在会在http://0:8000/启动服务器。

如果你还没做,记得在settings.py中把你的客户端添加到允许的主机里:ALLOWED_HOSTS = ["*"]

引用内容

4

你可以使用 https://ngrok.com/ 这个工具,它可以把你本地的网页服务器暴露到互联网上,让别人也能访问到。

14

为了补充@Depado的回答,你可能需要把你的局域网IP地址添加到 ALLOWED_HOSTS 这个设置里,和 localhost 一起。它的样子应该是这样的:

ALLOWED_HOSTS = ["localhost", "192.168.8.160"]

(如果 localhost 不好使,可以用 127.0.0.1,这是@Sabito 錆兎的建议)

145

运行Django开发服务器
这就是你需要的。为了进一步帮助你,下面是你应该做的事情:

python manage.py runserver 0.0.0.0:8000

顺便提一下,这可能和这个问题是重复的。

以下是文档中提到的内容:

请注意,默认的IP地址127.0.0.1是无法从你网络上的其他机器访问的。要让你的开发服务器可以被网络上的其他机器看到,你需要使用它自己的IP地址(例如192.168.2.1)或者使用0.0.0.0。

撰写回答