如何使用 Google App Engine 执行 Rails 样式 before_filter ?

发布于 2024-09-08 13:58:13 字数 122 浏览 5 评论 0原文

该应用程序被设置为基本 WSGI 应用程序。我只是想在 requestHandler 运行之前调用一个函数。

我想要一些非常类似于 before_filter 在 Rails 中工作的方式。

谢谢。

The app is setup as a basic WSGI application. I'm just trying to call a function before the requestHandler is run.

I would like something very much like the way before_filter works in Rails.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

西瓜 2024-09-15 13:58:13

我会使用装饰器,它与 Rails 中的 before_filter 不完全相同,但也许对你来说足够好:

def before_filter(fn):
    def inner_function(self):
        # do stuff before
        return fn(self)
    return inner_function

class MainPage(webapp.RequestHandler):

    @before_filter
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Hello, webapp World!')

I would use decorators, it's not exactly the same as before_filter in rails, but maybe good enough for you:

def before_filter(fn):
    def inner_function(self):
        # do stuff before
        return fn(self)
    return inner_function

class MainPage(webapp.RequestHandler):

    @before_filter
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Hello, webapp World!')
池予 2024-09-15 13:58:13

您可以将“之前”安装为 WSGI 中间件 - App Engine 使用 WSGI,就像当今 Python 中的几乎所有 Web 框架和服务器一样。这是一个示例 - 它正在做一些事情在处理程序运行之后,但在之前执行它们甚至更容易...无论如何,您的中间件“包装”了 WSGI 应用程序,即实际的应用程序;-),所以当然你可以在之前、之后或相反做一些事情;-)。

有关 WSGI 的更多信息,请参阅此处

You can install your "before" as WSGI middleware -- App Engine uses WSGI, like just about every web framework and server in Python these days. Here's an example -- it's doing things after the handler runs, but it's even easier to do them before... in any case, your middleware "wraps" the WSGI application that's the actual app;-), so of course you can do things before, after, or instead;-).

For more on WSGI, see here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文