如何访问运行在虚拟机里面的Django开发服务器

59次阅读
没有评论

共计 1186 个字符,预计需要花费 3 分钟才能阅读完成。

现象

在虚拟机环境中用 pip 命令装完 django 的你是不是急着用 python manage.py runserver 来启动 django 的开发服务器想看一下你写的 Hello world! 是否成功了,在命令运行完看到了下面的提示后:

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

December 24, 2018 - 15:50:53
Django version 2.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

你复制 http://127.0.0.1:8000/ 这个网址并粘贴到浏览器里面想看一下效果,可是这时你却失望的发现 浏览器提示你这个页面无法访问。

原因

原因很简单,你用 VMware 也好还是 virtualbox 和 vagrant 创建的虚拟环境是与宿主机在网络上相互隔离的,python manage.py runserver启动的命令默认只监听你虚拟机环境中本地网卡的网络请求。

解决

解决办法也很简单,在你上面执行的命令 python manage.py runserver 后面再加上你用 ifconfig 命令获取到的你的虚拟机的 ip 以及任意的一个大于 1024 的端口,也即是比如说 python manage.py runserver 192.168.2.8:8000, 如果你懒得 获取虚拟机的 ip 地址,最简单的是直接用0.0.0.0:8000,也即是python manage.py runserver 0.0.0.0:8000,这样你不仅在宿主机本身可以访问到你的 django 开发服务器,甚至是局域网任意的一台电脑都能访问到,怎么样是不是很爽!Tips: 你在宿主机要想访问你的 django 页面的话,访问 ip 为你虚拟机中ifconfigip a命令返回的结果中对应的 ip 哦~

参考

  • 这里django 的官方教程有详细的解释。

更新

  • 今天在看《Django 2 by example》这本书打算重新把 django 捡起来,就在虚拟机里面运行完 python manage.py runserver 0.0.0.0:8000 之后在宿主机上用 chrome 访问的时候却报了如下错误:如何访问运行在虚拟机里面的 Django 开发服务器 粗暴的解决办法很简单就是去 settings.py 里面找到 ALLOWED_HOSTS 这一项并设置为 ALLOWED_HOSTS=['*'], 当然这样做并不推荐,最佳实践方法请参考 这里
正文完
 
sharp097
版权声明:本站原创文章,由 sharp097 2018-12-26发表,共计1186字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)