使Django服务器在局域网中可访问
我已经安装了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 个回答
我到处查资料,发现大家都在说可以用这个终端命令:
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 = ["*"]
引用内容
你可以使用 https://ngrok.com/ 这个工具,它可以把你本地的网页服务器暴露到互联网上,让别人也能访问到。
为了补充@Depado的回答,你可能需要把你的局域网IP地址添加到 ALLOWED_HOSTS
这个设置里,和 localhost
一起。它的样子应该是这样的:
ALLOWED_HOSTS = ["localhost", "192.168.8.160"]
(如果 localhost
不好使,可以用 127.0.0.1
,这是@Sabito 錆兎的建议)
运行Django开发服务器
这就是你需要的。为了进一步帮助你,下面是你应该做的事情:
python manage.py runserver 0.0.0.0:8000
顺便提一下,这可能和这个问题是重复的。
以下是文档中提到的内容:
请注意,默认的IP地址127.0.0.1是无法从你网络上的其他机器访问的。要让你的开发服务器可以被网络上的其他机器看到,你需要使用它自己的IP地址(例如192.168.2.1)或者使用0.0.0.0。