我正在使用Django在我的Windows 7电脑上开发网页,现在我需要在平板电脑上测试一些页面。突然想到一个问题,我能否从Android平板电脑访问我的Windows本地主机?这是可能的吗?我在家中两个设备都连接同一个Wi-Fi。
我有一台安装了Android 4.0.4的三星Tab 2 10.1。
我正在使用Django在我的Windows 7电脑上开发网页,现在我需要在平板电脑上测试一些页面。突然想到一个问题,我能否从Android平板电脑访问我的Windows本地主机?这是可能的吗?我在家中两个设备都连接同一个Wi-Fi。
我有一台安装了Android 4.0.4的三星Tab 2 10.1。
看起来有几个问题。大多数回答都在解决的问题是“如何连接本地网络中的另一台服务器?”(或变体)。有两个答案,你可以直接使用计算机的 IP,也可以使用计算机的名称(可能需要附加.local
)。例如,我的电脑是xavier.local
。
第二个问题是你似乎正在解决的问题是,runserver
不能通过网络上的其他计算机访问(这是你的实际问题)。原因是默认情况下 Django 的 runserver 只会响应调用它的机器的请求。这意味着默认设置会使你只能从 Windows 访问服务器(出于安全原因他们有意这样做)。为了让它监听其他请求,你有两个选项:
runserver 192.168.1.101:8000
# Only handle requests which are made to the IP address 192.168.1.101
或者(当处理多个环境时)更容易的方法是:
runserver 0.0.0.0:8000 # handle all requests
因此,如果您的IP地址是192.168.1.101:
runserver # only requests made on the machine will be handled
runserver 127.0.0.1 # only requests made on the machine will be handled
runserver 192.168.1.101 # handles all requests (unless IP changes)
runserver 192.168.1.100 # does not handle any requests (wrong IP)
runserver 0.0.0.0 # handles all requests (even if the IP changes)
我认为需要指出的是,在涉及本地开发机器时,0.0.0.0
实际上不是一个安全问题。只有在使用可从外部访问的机器处理大型应用程序时,它才成为一个重要问题。除非您有端口转发(我有),或者像那样不稳定的事情,否则您不应过多担心。
runserver 0.0.0.0:8000
命令后,我仍然无法从Android手机访问服务器。但是,直接从开发机器(托管服务器的那台机器)访问192.168.1.101:8000是可以的。我的操作系统是Max OSX El Captain。 - Anupamsettings.py
中允许的主机列表中后,runserver 0.0.0.0:8000
才对我有效。 - arudzinskarunserver 0:8000
并修改了 settings.py
中的 ALLOWED_HOSTS
才使其正常工作。 - Anupam虽然这个帖子很久以前就活跃过了,但是在Windows 10上对我起作用的方法如下。详细说明一下,可能对像我这样的新手有所帮助。
在Django的 settings.py
文件中添加 ALLOWED_HOSTS = ['*']
使用 python manage.py 0.0.0.0:YOUR_PORT
命令运行Django服务器。我将端口设置为 9595
。
打开防火墙以允许该端口的访问:
进入控制面板 -> 系统和安全 -> Windows Defender防火墙
打开高级设置,选择入站规则,然后右键单击它,选择新建规则
选择 端口,点击下一步,输入你使用的端口号(在我的情况下是 9595
),点击下一步,选择允许连接
再次点击下一步,然后起一个名字,最后点击下一步。
现在找到你的PC的IP地址。
ipconfig
命令。192.168.0.100
现在,在另一个设备(如PC、移动设备、平板电脑等)上,使用相同的网络连接到 ip_address:YOUR_PORT
(在我的情况下就是 192.168.0.100:9595
)
希望你一切就绪!
您可以使用Windows命令提示符中的ipconfig
命令查找PC的IP地址。由于您提到它们通过WiFi连接,因此请查找无线适配器的IP地址。
由于平板电脑也在同一WiFi网络中,您只需将该地址输入平板电脑的浏览器中,并在末尾添加:8000,它应该会打开该页面。
/manage.py runserver 193.140.209.49:8000
。 - doniyor127.0.0.1
是一个回传地址,大致意思是“这个设备”;你的计算机和安卓平板是不同的设备,因此它们各自都有自己的 127.0.0.1
。换句话说,如果你试图在安卓平板上访问 127.0.0.1
,它会尝试连接到安卓设备上的 web 服务器,这不是你想要的。
然而,你应该能够通过 wifi 连接。在你的 Windows 电脑上,打开命令提示符并执行 ipconfig
命令。在输出中应该有你的 Windows 设备的地址,可能是 192.168.1.100
或类似的地址。你的平板应该能够在该地址上看到 Django 服务器。
需要知道您的机器的IP地址。确保您的两台机器(平板电脑和计算机)连接到同一个网络。
192.168.0.22 - 这是您的机器地址。
操作如下:
从您的平板电脑输入:192.168.0.22:8000
就这样!
使用EasyPHP DevServer 14.1进行测试。 诀窍在于,您必须先将本地IP地址添加到Apache服务器中,以便监听它。
右键单击托盘图标,在“配置”->“Apache”中打开“httpd.config”文件。
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 127.0.0.1:80
Listen 192.168.0.201:80 <<-- ADD THIS LINE
然后进入控制面板,停用您的Windows防火墙或将您的智能手机/平板电脑IP地址添加到例外中。
就是这样。希望能帮到您。
IP地址192.168.0.201可能与您的不同。 192.168.0.X
我自己也曾经遇到过这个问题,但是我一直无法找出原因。由于在我的iPhone上可以完美运行,所以我决定研究这个问题并找到一个快速的解决方案。
我的本地机器是Mac OSX 10.10+,一种解决方法是启动Apache服务器,但这非常不方便 - 每次想要快速检查Android设备上的内容时都需要更改DocumentRoot。此外,在Mac OSX 10.10上更改DocumentRoot非常麻烦。
如果您想使用:
python -m SimpleHTTPServer
sudo python -m SimpleHTTPServer [ANY PORT YOU WANT, BUT NOT 8000]
尝试这个命令 python manage.py runserver 然后将平板电脑和系统连接到同一个wifi,并在地址栏中输入以下内容: 例如:python manage.py runserver 192.168.0.100:8000 在平板电脑上输入该网址