python - 获取服务器的 URL
问题描述
我正在使用烧瓶和烧瓶电子邮件发送电子邮件。当我工作时,我使用 localhost 作为基本 url。我将它部署在服务器上,发送的电子邮件仍然显示 localhost 地址。例如
base_url = "http://localhost:0.0.0.6465"
url=base_url+'/login'
我用 url 发送了一封电子邮件(我正在使用烧瓶邮件),我可以使用 url 登录。
当我在服务器上部署时使用相同的脚本,我得到了相同的本地主机地址。我需要服务器 URL 应该是基本 URL。为了调试这个我试过
url=request.base_url+'/login'
如果我使用它,我会在浏览器中收到 404 错误。我不想更改 base_url 的初始化,因为我必须在本地和服务器中都使用。我怎样才能做到这一点?
解决方案
您可以通过request.host_url
. 但是,要获取应用程序特定部分的外部 URL,您真正想要做的是url_for
像引用常规端点时一样使用,但使用参数_external=True
:
鉴于您有:
@app.route('/login')
def login():
....
您可以使用以下方法生成外部 URL:
from flask import (
url_for,
)
...
url = url_for('login', _external=True)
如果您需要,这还将考虑应用程序前面的任何代理,只要您ProxyFix
在设置app
对象时使用了中间件。
由于这使用了与 Flask 在不同页面之间生成 URL 时使用的相同机制,因此它应该按照您的意愿运行 - 即它可以在远程主机上localhost
和远程主机上工作。
推荐阅读
- opencv - 如何使用 OpenCV 将我自己的图像校正到 KITTI 数据集的相机上
- javascript - 如何在 Java servlet 中遍历通过 AJAX 发送的数组?
- python - 如何使用 KeyVault 从 Python 连接到 ML Studio 工作区?
- scala - 在 spark scala 中将时间戳列从 UTC 转换为 EST
- google-sheets - 带有 GoogleFinance 动态日期的 ArrayFormula
- excel - VBA 自动化(宏)在 IE 选项卡上运行不佳
- postgresql - 消除 Postgres 触发器上的字段值
- office365 - 如何在office.js中为excel插件添加对话框
- c++ - 编译 Gurobi 示例代码时出现链接器错误
- powerbi - PowerBi 是否有“选项卡控件”控件