Python 访问用户';谷歌应用程序引擎(tipfy)模板中的OpenID信息
我正在使用内置于Google app engine中的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):
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')