将装饰器应用于上下文处理器

时间:2012-04-11 12:09:28

标签: python django facebook fandjango

我正在使用Fandjango作为Django Facebook Canvas应用程序。

要使用fandjango,您需要使用@facebook_authorization_required包装所有视图函数,以确保您已获得授权,然后为您提供变量request.facebook.user

我想要的是是建立一个上下文处理器,根据这个定义更多变量,即我希望我的所有模板能够使用fb_user作为快捷方式request.facebook.user

问题是,我不知道如何在上下文处理器上使用装饰器。

我有什么想法可以做到这一点吗?

1 个答案:

答案 0 :(得分:3)

不需要包装上下文处理器。如果您首先包装了视图,则request已经使用facebook.user属性进行了注释。由于请求仍然传递给上下文处理器,因此您可以访问该属性。

您应该在上下文处理器中快速检查 - if hasattr(request, 'facebook'),以确保从包装视图中调用它。