Python 在局域网上查看Django和网页包构建站点
我试图在其他设备上查看我的本地服务站点,如我的手机或其他笔记本电脑。在我目前的笔记本电脑上,这个网站运行良好,我看到了所有东西(前端),当我访问该网站时,我得到了200秒 然而,当我尝试用我的iphone和第二台笔记本电脑访问该网站时,我看不到任何前端,但当我尝试访问该网站时,我得到了200秒。我工作机器上的终端也告诉我有请求进来 我使用Python 在局域网上查看Django和网页包构建站点,python,django,webpack,lan,webpack-dev-server,Python,Django,Webpack,Lan,Webpack Dev Server,我试图在其他设备上查看我的本地服务站点,如我的手机或其他笔记本电脑。在我目前的笔记本电脑上,这个网站运行良好,我看到了所有东西(前端),当我访问该网站时,我得到了200秒 然而,当我尝试用我的iphone和第二台笔记本电脑访问该网站时,我看不到任何前端,但当我尝试访问该网站时,我得到了200秒。我工作机器上的终端也告诉我有请求进来 我使用Django作为后端,用webpack捆绑/构建Javascript和CSS,并用webpack dev server提供服务 当我运行webpack时,我看到
Django
作为后端,用webpack
捆绑/构建Javascript和CSS,并用webpack dev server
提供服务
当我运行webpack时,我看到以下消息:
http://0.0.0.0:3000/
webpack result is served from http://localhost:3000/public/bundle/
content is served from ./public
当我在我的工作机器上加载我的网页时,开发人员工具显示如下:
一切正常
我用这个命令运行django
$。/manage.py运行服务器0.0.0.0:8000
Myifconfig
为我提供:
inet 192.168.1.102
用我的第二台笔记本电脑,我访问了192.168.1.102:8000,在我的页面上什么也看不到。我在我的机器上得到了一个200
,站点工作意味着请求已经通过。在我的第二台笔记本电脑上,我在开发者工具中看到了这一点:
请注意,它在src
和href
中没有/public/
在我的第二台机器上,如果我访问192.168.1.102:3000
,我会看到一个界面,我可以点击192.168.1.102:3000/bundle/main.js
,并看到我的网页包构建的javascript
在我的第二台机器上,我尝试将开发人员工具中的src和href更改为192.168.1.102:3000/bundle/main.js
。然而,一切都不会改变,我仍然看到一个空白屏幕
以下是我的网页配置的要点
:
我认为您的页面是空的,因为整个“应用程序”都是由javascript生成的(至少在您的两个屏幕截图中是这样的,假设
的内容不是由django视图生成的),但是javascript文件对于不同于您的开发机器的客户端是不可访问的
如果没有settings.py
、URL.py
和视图的代码/模板生成您的主页,很难猜测为什么会发生这种情况,但我们有一些可能会产生这种问题的候选者:CORS、本地主机“中毒”以及最终的静态URL错误配置
CORS:如果任何方案,
主机名或端口不匹配。您正在从localhost:8000
(或192.168.1.102:8000
)和localhost:3000
请求文件。因此,如果您从外部设备/笔记本电脑请求文件,CORS问题将增加李>
localhost
是同一台机器
正如192.168.1.102在“工作计算机”上一样,但它不在第二台计算机上
笔记本电脑或网络中的任何其他设备李>
您是否使用{%url%}
或{%static%}
标记为css和js文件生成url?似乎没有,但它们看起来仍然是动态生成的(即,URL中缺少的“public/”部分)。我不知道如何使用vanilla Django和相同的设置获得不同的路径,因此您应该提供您的视图的源代码,至少可以获得精确的答案
解决方案(或至少提示:-):
从同一端口提供捆绑包(将其添加到您的端口)
替换html URL中的每个localhost
引用(可能需要更改站点
-请参阅)
使用标准模板标记/过滤器,避免在模板和代码中使用硬编码URL
或者安装(pip-install-django-webpack-loader
)并按照他们的自述或指南进行操作这里是我的项目的源代码:。我会尝试你的建议,并向你汇报最新情况