共计 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 为你虚拟机中ifconfig
或ip a
命令返回的结果中对应的 ip 哦~
参考
- 这里django 的官方教程有详细的解释。
更新
- 今天在看《Django 2 by example》这本书打算重新把 django 捡起来,就在虚拟机里面运行完
python manage.py runserver 0.0.0.0:8000
之后在宿主机上用 chrome 访问的时候却报了如下错误:粗暴的解决办法很简单就是去 settings.py 里面找到 ALLOWED_HOSTS 这一项并设置为 ALLOWED_HOSTS=['*'], 当然这样做并不推荐,最佳实践方法请参考 这里
正文完
发表至: Django框架
2018-12-26