从烧瓶中的 before_request() 返回

2023-11-23

我是 Flask 的新手,目前正在将现有的 WSGI 应用程序转换为通过 Flask 运行,从长远来看,这会让生活变得更轻松。

所有请求都 POST 到特定路由,但是当前应用程序在执行路由之前检查发布数据,以查看是否需要运行请求(即发布数据中提供的标识符是否已存在于我们的数据库中) )。

如果确实存在,则返回 200 代码并“提前”返回 json,并且不采取其他操作;如果不是,应用程序将继续正常路由。

我认为我可以通过调用 before_request() 在正确的点复制活动,但我不确定从 before_request() 返回烧瓶响应对象是否会在此时充分终止请求?或者是否有更好的方法来做到这一点?

注意:我必须将其作为 200 返回 - 我见过的其他示例会导致重定向或 4xx 错误处理(因为与此活动非常相似的是身份验证),所以最终我在 before_request() 结束时执行此操作:

    if check_request_in_progress(post_data) is True:
        response = jsonify({'request_status': 'already_running'})
        response.status_code = 200
        return response
    else:
        add_to_requests_in_progress(post_data)

这应该有效吗(返回并阻止进一步路由)?

如果不是,如何在调用 before_request() 之后阻止进一步路由?

有没有更好的办法?


根据他们在文件中所说的内容,它应该做你想做的事。

该函数将在没有任何参数的情况下被调用。如果函数返回非 None 值,则将其处理为视图的返回值,并停止进一步的请求处理。(source)

@app.route("/<name>")
def index(name):
    return f"hello {name}"

@app.before_request
def thing():
    if "john" in request.path:
    return "before ran"

使用上面的代码,如果有一个“john”url_path,我们将看到before ran在输出中,而不是实际的预期视图。你会看见hello X对于其他字符串。 所以是的,使用before_request并返回一些东西,除了None将阻止烧瓶为您的实际服务view。你可以redirect用户或向他们发送适当的响应。

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

从烧瓶中的 before_request() 返回 的相关文章

随机推荐

  • SwiftUI 将 TupleView 转换为 AnyView 数组

    Code 我有以下代码 struct CustomTabView View where Content View let children AnyView init ViewBuilder content escaping gt Conte
  • PyPlot 将替代 y 轴移动到背景

    在 pyplot 中 您可以使用以下命令更改不同图形的顺序zorder选项或通过更改顺序plot 命令 但是 当您通过添加替代轴时ax2 twinx 新轴将始终覆盖旧轴 如文档 是否可以更改轴的顺序以将替代 孪生 y 轴移动到背景 在下面的
  • “视觉继承”的现状如何

    我们有一个应用程序 它必须灵活地向用户显示其主表单 根据用户的不同 表单应该略有不同 也许这里或那里有一个额外的按钮 或者其他一些细微差别 为了停止编写代码来显式删除或添加控件等 我转向视觉继承来解决问题 在我认为是一种整洁 干净和逻辑的
  • 有没有办法在Python中创建类属性?

    由于某种原因 以下内容不起作用 gt gt gt class foo object property classmethod def bar cls return asdf gt gt gt foo bar
  • SimpleDateFormat toPattern 在 java 9 中的行为有所不同

    DateFormat dateFormat DateFormat getDateInstance DateFormat SHORT new Locale SV SE SimpleDateFormat dateFormat toPattern
  • std::string::npos == -1 总是 true 吗?

    标题相对来说是不言自明的 我认识到与其他答案的相似之处 但所有这些答案都有不同的运算符安排 因此也有不同的转换规则 所以我需要一个能够澄清这个特殊情况的答案 如果有人可以指出标准中解释这一点的部分 我会很乐意投票并接受答案 NO 这并不总是
  • 在 Rails 4 中使用单个表单保存多条记录

    我有一个模型叫Family which belongs to user我想让用户能够在一个表单中添加多个家庭成员 该表单位于 views families new html erb 因此用户会看到一张为一个 user id 创建 3 个家庭
  • SKPaymentTransactionObserver 在应用程序切换时未收到回调

    我设置了应用内购买 以便当用户单击购买按钮时 会出现 请稍候 视图并将付款添加到付款队列中 这总是会导致队列观察者立即回调 表示交易进入 购买 状态 当用户在弹出确认购买对话框之前返回主屏幕然后取消时 就会出现我的问题 如果我在主屏幕上等待
  • 在 Razor 中使用 Html.EditorForModel 渲染时,ASP.Net [HiddenInput] 数据属性不起作用?

    我有以下模型 public class Product HiddenInput DisplayValue false public int ProductID get set Required ErrorMessage Please ent
  • 如何在 QWidget 周围添加边框?

    我在用PyQT4为潜在客户创建示例应用程序 我正在寻找某种方法来在特定小部件周围放置边框 请给我一些寻找的指示 更新 class CentralWidget QtGui QWidget def init self mainWindow su
  • 如何获取android中所有非系统应用程序的列表

    我正在开发一个应用程序 我想在其中获取所有非系统应用程序的列表 这是我的代码部分 TextView tv new TextView this this setContentView tv ActivityManager actvityMan
  • 在 ARM 上的 Linux 中写入和读取内存映射设备寄存器

    我正在尝试按照以下步骤读取和写入 ARM9 SAM9X25 上的寄存器 http infocenter arm com help index jsp topic com arm doc faqs ka3750 html我以以下代码结束 in
  • 在代理上启用 ssl 后,服务器发送的事件停止工作

    我在他面前做了一个基于Tomcat和Nginx的Web项目 必须努力工作才能使其无错误地运行 但是 当我将 ssl 添加到 nginx 时 停止工作的服务器发送事件 如果我直接访问后端服务器 它可以工作 所以 nginx 的某个地方有问题
  • 返回 `p->first` 和 `p->second` 的 C++ 函数对象

    是否有一个内置函数对象返回p gt first and p gt second 这样我就可以愉快地写作了 transform m begin m end back inserter keys get first transform m be
  • 在android中使用OpenCV进行人脸识别?

    我能够使用 open cv 检测人脸 但我不知道如何处理人脸识别 我用谷歌搜索了很多 但没有找到任何可以指导我的文章或博客 有人可以帮我在android上开发人脸识别应用程序吗 您始终可以使用 JavaCV 它是本机 OpenCV 函数的一
  • 如何在Matlab中定义结构体

    我知道结构可以通过多种方式定义 例如 向变量添加字段 p color red 2 p color green 4 p color blue 7 通过赋值定义标量结构 S struct a 0 b 1 c 2 我想要做的是创建一个结构定义 如
  • 使用 Expression[] 调用 (params object[])

    我正在尝试从 Linq Expression 树中调用 String Format 这是一个简单的例子 var format Expression Constant 0 1 var company Expression Property i
  • MySQL 错误 1093 - 无法在 FROM 子句中指定更新的目标表

    我有一张桌子story category在我的数据库中 条目已损坏 下一个查询返回损坏的条目 SELECT FROM story category WHERE category id NOT IN SELECT DISTINCT categ
  • 在 matplotlib 标签中添加下标文本

    这是我的第一个问题 我是 python 菜鸟 所以可能还会有更多后续 我想用 matplotlib 创建一个图形 在标签中 我想包含一个化学式 其中涉及下标 我认为同样适用于上标 无论如何 我不知道标签应该是什么样子 import nump
  • 从烧瓶中的 before_request() 返回

    我是 Flask 的新手 目前正在将现有的 WSGI 应用程序转换为通过 Flask 运行 从长远来看 这会让生活变得更轻松 所有请求都 POST 到特定路由 但是当前应用程序在执行路由之前检查发布数据 以查看是否需要运行请求 即发布数据中