【问题标题】:How can I setup Django and React on the same port and handle routing?如何在同一个端口上设置 Django 和 React 并处理路由?
【发布时间】:2020-07-11 03:07:48
【问题描述】:

问题

嗨!我正在尝试设置我的 Django-React 应用程序,但我无法使用反应路由器链接和路由让两者在同一端口中运行(Django Rest API 在端口 8000 中并在 3000 中作出反应) .

我正在使用django, djangorestframework, react, react routerreact router dom。请帮忙?????????

Django 的 API 非常适合 get 和 post 请求,并且它们与 ListCreateAPIViews 完美加载

这是我的文件的一些图片。如果您需要更多信息,请告诉我。

图片

项目结构

models.py

​​>

serializers.py

​​>

api/urls.py

​​>

urls.py

​​>

settings.py

​​>

【问题讨论】:

  • 更改 webpack 中的端口或将运行 django 服务器的端口更改为您想要的任何端口。也就是说,如果你在同一台机器上开发/运行两者,你希望它们在不同的端口上运行,因为只有一个应用程序可以绑定到任何端口,所以你不能同时在同一个端口上运行它们
  • 但最终我想在服务器上运行所有东西,因此最好让所有东西都在同一个端口上运行,对吧?顺便说一句,我还使用了 create-react-app
  • 或者生产版本可以在各自的端口中运行吗?
  • 我想我明白你在问什么,我在下面给出答案

标签: django reactjs django-rest-framework react-router


【解决方案1】:

端口是绑定到服务器上运行的应用程序实例的特定网络端点。例如,通常如果我想通过 ssh 连接到我的服务器,我将需要通过端口 22 进行连接。由于 SSH 在端口 22 上运行,所以没有其他东西可以在那里运行,因为计算机如何知道进入端口 22 的流量是对于 ssh 或其他正在监听的应用程序?这就是为什么有成千上万个端口可供您使用,以及为什么 django 和 react 在同时运行它们时会在不同的端口上运行。如果您有兴趣,我会阅读一些关于 ports 和其他一些基本网络主题的内容。

现在我想你要问的是:我想一起运行 react 和 django,我希望他们能够交流。对于这个在不同的端口上运行是好的,对于开发只需指向 react 应用程序通过指定的端口与 django 通信,对于 django 也是如此。当您实际在生产中启动应用程序时,您将在服务器上运行该程序并将其绑定到一个端口,然后您的客户端将使用该指定端口访问 api。因为它们不在生产中的同一台机器上运行,所以不会发生冲突,所以这很好。有时您会遇到很多东西同时尝试连接的情况,如果该端口上已经连接了一些东西,则连接将被拒绝。这就是为什么可以将网络服务器配置为侦听特定端口并将流量转发给其他人,这样可以同时为许多用户提供服务。

【讨论】:

  • 很棒的答案!此外,我还没有在 django 中为主路径渲染 index.html。现在一切正常,谢谢!
【解决方案2】:

答案

这是不可能的,因为 Django 和 React 都需要一个单独的端口来运行。为了使它工作,必须生成来自 React 的 build,然后由 Django 导入和重新生成,以便只有 django 应用程序正在运行并且只有 Django 端口是打开的。

希望这对也有这个问题的人有所帮助。

干杯!

【讨论】:

    【解决方案3】:

    如果你在你的服务器上设置nginx 并且你的反向代理充当路由器,那么你可以做一些链接

    localhost/api --> locahost:8000

    本地主机 --> 本地主机:3000

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 2021-04-11
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 2020-05-02
      • 2018-11-08
      • 2016-08-07
      • 2023-02-07
      相关资源
      最近更新 更多