首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用patch_internal

如何使用patch_internal
EN

Stack Overflow用户
提问于 2015-02-06 14:39:29
回答 1查看 717关注 0票数 1

在我的应用程序中,我有一个应该更新资源中的字段的钩子:在另一个帖子中,有人使用了patch_internal方法,但我不明白如何使用。

代码语言:javascript
复制
from my_application import app
from eve.methods.patch import patch_internal

def my_hook(...):
    with app.test_request_context():
        patch_internal("my_resource", payload={"bar": "bar_value"}, lookup={"foo": "foo_value"})

我试着在settings.py中使用settings.py

取决于我尝试的方式,我得到了

  • 原始请求的404,它首先触发了钩子,
  • 或者AssertionError:

代码语言:javascript
复制
Debugging middleware caught exception in streamed response at a point where response headers were already sent.
Traceback (most recent call last):
  File ".../lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File ".../lib/python2.7/site-packages/flask/app.py", line 1825, in wsgi_app
    ctx.auto_pop(error)
  File ".../lib/python2.7/site-packages/flask/ctx.py", line 374, in auto_pop
    self.pop(exc)
  File ".../lib/python2.7/site-packages/flask/ctx.py", line 357, in pop
% (rv, self)
AssertionError: Popped wrong request context.
(<RequestContext 'http://127.0.0.1:5001/' [GET] of eve> instead of <RequestContext 'http://127.0.0.1:5001/my_endpoint' [GET] of eve>)

我的问题是:

patch_internal的合适参数是什么?我该怎么告诉伊芙,我想换哪一件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-07 08:44:31

这是一个微不足道的例子,应该有效:

代码语言:javascript
复制
from eve import Eve
from eve.methods.patch import patch_internal


app = Eve()

def my_hook(*args):
    with app.test_request_context():
        payload = {"bar": "bar_value"}
        lookup = {"_id": "4f71e038c88e201118000002"}
        patch_internal("my_resource", payload, **lookup)


# this is rather stupid. We're going to patch the same document on *every* GET request, but you get the point
app.on_post_GET += my_hook


if __name__ == '__main__':
    app.run()

或者,您可以查看贴片内试,以获得一个更清晰的示例。这里还有一个很好的内部实例。希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28368198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档