使用 Flask 蓝图,如果指定了子域,如何修复 url_for 的损坏?

2024-03-21

在烧瓶蓝图中,我有:

frontend = Blueprint('frontend', __name__)

我的索引函数的路径是:

@frontend.route('/')
def index():
  #code

这工作正常,但是,我试图向路由添加一个子域,如下所示:

@frontend.route('/', subdomain='<var>')
def index(var):

但这会破坏应用程序并且浏览器会输出(除其他外):

werkzeug.routing.BuildError
BuildError: ('frontend.index', {}, None)

frontend.index 在我的代码中的几个地方被调用url_for('前端.index')

当我包含子域时,如何使 url_for 正常工作?我在文件中唯一能找到并且我认为可能相关的是下面的内容http://flask.pocoo.org/docs/api/ http://flask.pocoo.org/docs/api/:

为了集成应用程序,Flask 有一个钩子来拦截 URL 构建 通过 Flask.build_error_handler 处理错误。 url_for 函数结果 当当前应用程序没有给定的 URL 时出现 BuildError 端点和值。当它发生时,current_app 调用它的 build_error_handler如果不是None,可以返回一个字符串 用作 url_for 的结果(而不是 url_for 的默认引发 BuildError 异常)或重新引发异常。一个例子:

def external_url_handler(error, endpoint, **values):
    "Looks up an external URL when `url_for` cannot build a URL."
    # This is an example of hooking the build_error_handler.
    # Here, lookup_url is some utility function you've built
    # which looks up the endpoint in some external URL registry.
    url = lookup_url(endpoint, **values)
    if url is None:
        # External lookup did not have a URL.
        # Re-raise the BuildError, in context of original traceback.
        exc_type, exc_value, tb = sys.exc_info()
        if exc_value is error:
            raise exc_type, exc_value, tb
        else:
            raise error
    # url_for will use this result, instead of raising BuildError.
    return url

app.build_error_handler = external_url_handler

但是,我对 python(和编程)很陌生,无法理解我应该把这段代码放在哪里,或者当发生构建错误时如何调用该函数。

任何见解将不胜感激:)


首先,要使用子域,您需要有一个 SERVER_NAME 值配置 http://flask.pocoo.org/docs/config/:

app.config['SERVER_NAME'] = 'example.net'

你有这样的观点:

frontend = Blueprint('frontend', __name__)
@frontend.route('/', subdomain='<var>')
def index(var):
    return ...

为了重建此视图的 URL,Flask 需要一个值var. url_for('frontend.index')将会失败,因为它没有足够的值。使用上面的 SERVER_NAME,url_for('frontend.index', var='foo')将返回http://foo.example.net/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Flask 蓝图,如果指定了子域,如何修复 url_for 的损坏? 的相关文章

  • Python:用中值替换异常值

    我有一个 python 数据框 其中有一些异常值 如果这些值不存在的话 我想用数据的中值替换它们 id Age 10236 766105 11993 288 9337 205 38189 88 35555 82 39443 75 10762
  • 使用 Flask 从 Jinja 模板中的 settings.py 文件获取变量

    假设我有 settings py 文件 其中包含一堆常量 将来可能会更多 如何访问 Jinja 模板中的这些变量 Flask 会自动将您的应用程序的配置包含在标准上下文 http flask pocoo org docs templatin
  • Python(openpyxl):将数据从一个excel文件转移到另一个(模板文件)并用另一个名称保存,同时保留模板

    我有一个templateexcel 文件名为template xlsx其中有许多张 我想从单独的地方复制数据 csv文件到第一页template xlsx 命名为data 并将新文件另存为result xlsx同时保留原来的模板文件 我想粘
  • Pandas:根据其他多级列对最里面的列进行分组排序

    考虑下面的 df In 3771 df pd DataFrame A a 11 B b 11 C C1 C1 C2 C1 C3 C3 C2 C3 C3 C2 C2 D D1 D2 D1 D3 D3 D2 D4 D4 D1 D2 D3 E v
  • django/whitenoise 存储后端导致错误

    我在调试关闭时在 heroku 上运行 django 应用程序时遇到了 500 错误 使用 rollbar 了解发生错误的原因后 它报告了以下内容 ValueError The file media img 1 jpg could not
  • Plotly - 不同颜色的表面

    我正在尝试在 Plotly for Python 中绘制多个曲面 每个曲面具有不同的颜色 具体来说 表面显示了在相空间中不同点采取行动的预测奖励函数 由于我在每个点都有多个可能的操作 因此每个点都是不同的表面 我想对每个表面进行独特的着色
  • 如何在python包中包含.pyx文件

    我在我的包中使用了 cythonpyirt https github com 17zuoye pyirt 但是当我将其发布到 pypi 时 pyx 文件不包含在 tar gz 中 我认为这一定与安装文件有关 但是 我找不到解决这个问题的方法
  • 在python中浏览ftp目录

    我正在尝试使用 ftplib 使用 Python 3 从 ftp 服务器下载多个文件夹 我有一个文件夹名称列表 它们都位于文件夹 root 中 问题是我不知道如何浏览它们 当我使用cwd我可以进入更深的目录 但是如何再次起来呢 我正在尝试得
  • ctypes.ArgumentError:不知道如何转换参数

    我在C库中定义了一个函数 如下所示 int Test char str1 int id1 char str2 float val float ls 我想在Python中使用它 所以我编写了以下Python代码 str1 a str2 b i
  • 如何在Python模拟中调用模拟方法

    我想创建一个模拟方法来调用被模拟的底层方法 我正在想象类似以下的内容 但我找不到任何有关模拟对象的文档 该对象包含对被模拟对象的引用 我将其表示为 wrapped method foo below from mock import patc
  • Python:选择多个已安装模块版本之一

    在我的系统上 我多次安装了多个模块 举个例子 numpy 1 6 1安装在标准路径中 usr lib python2 7 dist packages 我有一个更新版本numpy 1 8 0安装于 local python lib pytho
  • VS Code Pylance 不突出显示变量和模块

    我正在使用带有 Python 和 Pylance 扩展的 VS Code 我遇到的问题是 Pylance 扩展没有对模块和数据框等内容进行语法突出显示 我希望顶部的模块为绿色 df 变量为蓝色 我正在使用默认的深色 颜色主题 这是我的 VS
  • SQL查询中的Python列表作为参数[重复]

    这个问题在这里已经有答案了 我有一个 Python 列表 比如说 l 1 5 8 我想编写一个 SQL 查询来获取列表中所有元素的数据 例如 select name from students where id IN THE LIST l
  • 使用 pyinstaller 制作的可执行文件出现运行时错误

    所以我使用 Pygame 制作了一个游戏 现在我想用它制作一个可执行文件 首选独立可执行文件 所以我用它来制作可执行文件 pyinstaller onefile main py 编译顺利 但运行时出现错误 这是错误 Traceback mo
  • 如何下载和使用对象检测数据集(例如 coco 或 pascal)

    我对物体检测领域非常陌生 我想知道是否有人可以帮助我下载和使用对象检测数据集 例如 coco 或 pascal 当我下载数据集后访问他们的网站时 我觉得我不知道应该如何处理它们 我知道这个问题很愚蠢 但是开始的提示可能非常有用 谢谢 我正在
  • 如何使用 Python 3 在 OpenCV 3 上正确加载 cv2.KeyPoint 和描述符?

    有一天 我不得不恢复一个使用 OpenCV 3 和 Python 2 7 的旧项目 在此代码中 要加载 cv2 KeyPoint 我执行以下操作 import numpy as np import cPickle import cv2 ke
  • 通过 Tweepy 在 Twitter 上更新状态时的回溯

    我一直在尝试使用 Twitter 在 Twitter 上发布我的 Rpi 读数tweepy 但首先我想检查一下是否tweepy本来可以正常工作 但事实并非如此 我正确安装了软件包 但是当我尝试运行简单的代码来发布某些内容时 出现错误 是的
  • 使用 PyCharm 分析 Django

    即使在开发环境中 我的应用程序也相当慢 所以我想找出是什么导致它变慢 以便我可以尝试修复它 我了解调试工具栏 根据它的报告 数据库查询和下载的源都不是问题 所以它一定是业务逻辑 但是 我无法使用 Django 服务器运行 PyCharm 分
  • 如果我更改当前工作目录,为什么 __file__ 会变成无效路径?

    执行中test py from tmp import os print os path abspath file os chdir var print os path abspath file output tmp test py var
  • 媒体文件上的 404 - Django

    昨晚我将项目上传到 pythonanywhere com 我想在那里测试我的项目生产设置 在我允许的模型之一中用户上传JPG 团队徽标 上传过程运行良好 文件位于我的 MEDIA ROOT 中 问题是 当我尝试在模板中访问它 以将其显示在页

随机推荐

  • 为什么 Pyglet 不能正确绘制多边形?

    我随机创建点用于使用 Pyglet 绘制多边形 但 Pyglet 大多数时候都不能正确完成工作 好吧 我尝试用另一个图形模块绘制多边形 实际上它有效 但如果 Pyglet 工作正常 它会让我的工作变得更容易 我用它来绘制多边形和点 以方便您
  • 无需插件的 jQuery 链式动画

    在使用 jQuery 之前 我可以做一个带有延迟的链式动画 如下所示 element delay 45 animate 45 delay 45 animate 45 delay 45 animate 45 现在 自从更新到 v1 6 1 以
  • 子查询是邪恶的吗?

    这个问题是在一位朋友的评论之后提出的 他说 当一个查询有很多子查询时 就表明数据库存在设计缺陷 必须避免它们 他还表示 许多书籍都提出了同样的建议 我部分同意 但我认为这些查询具有复杂的逻辑 需要大量子查询 或者为了避免子查询 查询的物化视
  • 带 read 和 IFS 的 Bash while 循环

    我必须解析以下格式的文件 line1 param1 line1 param2 line1 param3 line1 param2 line2 param2 line2 param3 line1 param3 line3 param2 lin
  • 我可以在 python 中“伪造”一个包(或至少一个模块)以用于测试目的吗?

    我想用 python 伪造一个包 我想定义一些东西以便代码可以做 from somefakepackage morefakestuff import somethingfake somefakepackage 是在代码中定义的 其下面的所有
  • 如何处理drive api的最大导出限制大小文件

    我正在尝试下载一些 google doc 文件 但之后我需要使用导出方法转换为 microsoft word mimetype 它工作正常 直到找到一个大小超过 10 mb 的文件 api 文档说这是限制导出文档的大小 但我确实需要下载这些
  • 在 ElasticSearch 中获取 SearchResponse 的结果

    我正在尝试使用 ES 作为我的 MongoDB 的索引 我已经成功地集成了它们 但我发现搜索 API 相当复杂且令人困惑 Java API 也没有太大帮助 我能够找到完全匹配的内容 但是如何才能得到这个结果呢 这是我的代码 Node nod
  • JAX-WS Web 服务线程安全和性能问题

    我从其他一些帖子以及我对 JAX WS Web 服务的理解中了解到它们不是线程安全的 我的 Web 服务将被 100 个客户端调用 我们需要能够每秒处理大约 200 个事务 我的网络服务将与数据库交互以执行其工作 如果我在访问数据库的代码周
  • WebBrowser 控制会话中下载文件

    我在用着WebBrowser control浏览登录页面并下载文件 由于我找不到使用我正在使用的控件自动管理下载的方法WebClient类来尝试实现这一目标 问题是自从WebClient与浏览器不在同一上下文 会话中 我下载的只是安全错误屏
  • 如何使用树表显示 Oracle SQL 表中的所有行?

    我有这张表 为每个区域创建表 id area INT 主键 名称 VARCHAR2 200 id areapadre INT 引用 perarea id area 添加以下内容是为了访问数据 我的目的是创建一个层次结构 在树视图中显示区域及
  • 从 python 中的文本文件中读取特定列

    我有一个文本文件 其中包含一个由数字组成的表格 例如 5 10 6 6 20 1 7 30 4 8 40 3 9 23 1 4 13 6 例如 如果我想要仅包含在第二列中的数字 我如何将该列提取到列表中 f open file r line
  • MPI 中的相同发送和接收缓冲区

    在我的代码中 每个进程都作用于数组的特定部分 我希望每个进程将其处理的部分发送到其他进程 并从其他进程接收其他部分 为此我使用了MPI Allgatherv但我保持发送和接收缓冲区相同 MPI Allgatherv vel 0 localS
  • 如何将自定义的 Firefox 配置文件与 PHPUnit 的 Webdriver 框架结合使用?

    我知道使用 selenium RC 我曾经传递一个命令行操作符 firefoxProfileTemplate 这样就可以了 现在使用 Selenium2 Webdriver 这似乎不再起作用了 由于我正在使用 PHPUnit 进行其他测试
  • AWS Step Functions 是否登录 CloudWatch

    我想知道 AWS 步骤函数执行的输出是否记录在 CloudWatch 日志组中 我是not讨论由 step 函数调用的 lambda 函数的输出 我对状态机本身的输出感兴趣 我问这个问题是因为我们通常将所有日志集中在 loggly 中 以便
  • 是否可以将代码隐藏分成多个部分文件?

    我有一个带有 aspx cs 代码隐藏的 aspx Web 表单 隐藏的代码有近 2000 行长 而且已经到了轻松导航的唯一方法就是在各部分之间放置大量空格 缩小以便我可以看到代码的物理外观 并且然后放大我要编辑的地方 换句话说 这是一个很
  • 使用 Qt Designer 调整 Qt 拆分器布局大小行为

    我在 Qt 中通过拖放制作的视图中存在尺寸问题 让我从一张图片开始来帮助我解释 这是我的表单的主窗口 发生的情况是 我们有 4 个选项卡小部件 左侧选项卡小部件有一个到 2 个中间小部件的水平分割器 2 个中间小部件有一个垂直分离器 左侧和
  • 如何检测请求是否被中止?

    我正在提出请求 然后立即中止 var x get url function d e xhr alert d x abort 问题是它执行success函数并返回空数据 这里的例子 http jsfiddle net e5NBT 有没有 jQ
  • 将 ASM 转换为 C(不是逆向工程)

    我用谷歌搜索 发现数量惊人的轻率回复 基本上都是在嘲笑提出这样问题的提问者 Microchip 免费提供一些源代码 我不想将其发布在这里 以防万一 基本上 谷歌 AN937 单击第一个链接 其中有一个 源代码 链接及其压缩文件 它在 ASM
  • 使 Swift 并发中的任务串行运行

    我有一个基于文档的应用程序 它使用结构作为其主要数据 模型 由于模型是 的子类 的属性NSDocument需要从主线程访问它 到目前为止一切都很好 但对数据的某些操作可能需要相当长的时间 我想为用户提供一个进度条 这就是问题开始的地方 特别
  • 使用 Flask 蓝图,如果指定了子域,如何修复 url_for 的损坏?

    在烧瓶蓝图中 我有 frontend Blueprint frontend name 我的索引函数的路径是 frontend route def index code 这工作正常 但是 我试图向路由添加一个子域 如下所示 frontend