Python 在局域网上查看Django和网页包构建站点

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时,我看到

我试图在其他设备上查看我的本地服务站点,如我的手机或其他笔记本电脑。在我目前的笔记本电脑上,这个网站运行良好,我看到了所有东西(前端),当我访问该网站时,我得到了200秒

然而,当我尝试用我的iphone和第二台笔记本电脑访问该网站时,我看不到任何前端,但当我尝试访问该网站时,我得到了200秒。我工作机器上的终端也告诉我有请求进来

我使用
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

My
ifconfig
为我提供:

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
    )并按照他们的自述或指南进行操作

    这里是我的项目的源代码:。我会尝试你的建议,并向你汇报最新情况