Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 访问用户';谷歌应用程序引擎(tipfy)模板中的OpenID信息_Python_Google App Engine_Middleware_Tipfy - Fatal编程技术网

Python 访问用户';谷歌应用程序引擎(tipfy)模板中的OpenID信息

Python 访问用户';谷歌应用程序引擎(tipfy)模板中的OpenID信息,python,google-app-engine,middleware,tipfy,Python,Google App Engine,Middleware,Tipfy,我正在使用内置于Google app engine中的OpenID身份验证,并试图使当前登录用户的信息在模板中自动可用 手动操作可能类似于: from google.appengine.api import users from tipfy import RequestHandler from tipfy.ext.jinja2 import render_response def WhateverHandler(RequestHandler): def get(self):

我正在使用内置于Google app engine中的OpenID身份验证,并试图使当前登录用户的信息在模板中自动可用

手动操作可能类似于:

from google.appengine.api import users
from tipfy import RequestHandler
from tipfy.ext.jinja2 import render_response

def WhateverHandler(RequestHandler):
    def get(self):
        user = users.get_current_user()
        return render_response('template_name.html', user=user)
        # great, now I can use {{ user.nickname }} or whatever in the template
我不想在每个请求处理程序中都编写此代码,因此希望能够添加某种中间件来处理它(我在这里主要猜测):

有什么想法吗?我试过了解tipfy的SessionMiddleware是如何工作的,但并不完全了解


干杯。

您可以创建RequestHandler的子类,在
\uuuu init\uuuu
上自动检索当前用户。还可以向该子类添加方法以自定义模板呈现。我认为中间件不是这个问题的正确解决方案

from google.appengine.api import users
from tipfy import RequestHandler
from tipfy.ext.jinja2 import render_response

class UserPageHandler(RequestHandler):
    def __init__(self, app, request):
        super(UserPageHandler, self).__init__(app, request)

        self.user = users.get_current_user()

    def user_response(self, template_name):
        return render_response(template_name, user=self.user)

def WhateverHandler(UserPageHandler):
    def get(self):
        return self.user_response('template_name.html')

这看起来很好用。谢谢。我想到了django,对中间件和上下文处理器感到困惑。
from google.appengine.api import users
from tipfy import RequestHandler
from tipfy.ext.jinja2 import render_response

class UserPageHandler(RequestHandler):
    def __init__(self, app, request):
        super(UserPageHandler, self).__init__(app, request)

        self.user = users.get_current_user()

    def user_response(self, template_name):
        return render_response(template_name, user=self.user)

def WhateverHandler(UserPageHandler):
    def get(self):
        return self.user_response('template_name.html')