2011-03-30 3 views
0

Google 애플리케이션 엔진에 내장 된 OpenID 인증을 사용하고 있으며 현재 로그인 한 사용자의 정보를 으로 자동 템플릿으로 만들려고합니다.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가 작동하는 방식을 살펴 보았지만 제대로 이해하지 못했습니다.

건배.

답변

1

__init__에 자동으로 현재 사용자를 검색하는 RequestHandler의 하위 클래스를 만들 수 있습니다. 또한 해당 서브 클래스에 메소드를 추가하여 템플리트 렌더링을 사용자 정의 할 수 있습니다. 미들웨어가이 문제의 올바른 해결책이라고 생각하지 않습니다.

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') 
+0

정상적으로 작동하는 것처럼 보입니다. 감사. 장고에 대해 생각하고 있었고 미들웨어와 컨텍스트 프로세서 사이에 혼란 스러웠습니다. – codebyren