我正在使用内置到Google引擎中的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我不想在每个请求处理程序中编写这段代码,因此希望能够添加某种中间件来处理它(我主要是在这里猜测):
from google.appengine.api import users
class GoogleUsersMiddleware(object)
def post_dispatch(self, handler, response):
user = users.get_current_user()
# now somehow add user to the response?
return response有什么想法吗?我试过看看tipfy的SessionMiddleware是如何工作的,但不太明白。
干杯。
发布于 2011-03-30 02:35:09
您可以创建RequestHandler的子类,该子类在__init__上自动检索当前用户。此外,还可以向该子类添加方法以自定义模板呈现。我不认为中间件是解决这个问题的正确方法。
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')https://stackoverflow.com/questions/5481106
复制相似问题