django - 从在 WSL 上运行的 django 连接到在 Windows 上运行的 Post

我主要在 Windows 上开发,但我正在使用 WSL 测试我的应用程序,因为我会将它推送到 Linux 服务器。我当前的问题是将在 WSL 上运行的 django 应用程序连接到在 Windows 上运行的 postgres。许多文章解释了如何连接到在 WSL 上运行的 postgres,而不是反过来。

最佳答案

我无法测试所有这些,因此我们可能需要调整此答案中的一些项目,但这是我推荐的步骤:

  • 首先,假设这是一个 WSL2 实例,mDNS 应该可以从 WSL 访问 Windows 主机 IP。对于初学者,请从 WSL 内部尝试 ping $(hostname).local

  • 如果这可以解析 IP 地址,那么这是第 1 步。如果不能,那么还有其他选择(参见 this answer)。

  • 我假设 ping 不会因防火墙而返回。您需要一个规则来启用它。从管理员 PowerShell,New-NetFirewallRule -DisplayName "WSL Ping"-Direction Inbound -InterfaceAlias "vEthernet (WSL)"-Action Allow -Protocol ICMPv4。然后再次尝试 ping $(hostname).local。使用 Remove-NetFirewallRule -DisplayName "WSL Ping"

    删除规则
  • 如果可行,那么您就真正找到了关于如何访问 PostgreSQL 的答案——在该接口(interface)上设置防火墙规则。它应该类似于 New-NetFirewallRule -DisplayName "WSL PostgreSQL"-Direction Inbound -InterfaceAlias "vEthernet (WSL)"-Action Allow -Protocol TCP -LocalPort 5432

  • 然后您应该能够使用 {computername}.local 地址从 WSL 中的 Django 应用访问它。

关于django - 从在 WSL 上运行的 django 连接到在 Windows 上运行的 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67511282/

相关文章:

emacs - 如何更改 emacs 中行号模式的背景颜色?

android-studio - 如何降级 Kotlin 版本

python - 对象没有属性

python-3.x - 使用 pytest 禁用在控制台上打印日志输出

javascript - 如何仅在特定页面中删除页脚组件?

python - 如何获取字典中最大值的键,如果有重复,还返回最大数字键

vue.js - 如何将第三方脚本代码添加到 Nuxt 中?

apache-spark - Spark 窗口函数中的条件

docker - Jenkins SSH 管道步骤 - 需要一个终端来读取密码

clojure - 如何在 clojure 中生成随机字母数字字符串?