2011-11-30 3 views
3

일반적인 상용구 링크가있는 진자 템플릿이 있는데, 그 중 하나는 "로그 아웃"링크입니다. 이 링크의 URL은 페이지를 렌더링하기 전에 Users.create_logout_url()을 사용하여 생성해야합니다.Tipfy & Jinja : 모든 페이지에 대한 로그 아웃 URL 만들기

이 URL을 생성하고 모든 get/post 처리기에 대한 render_response에 추가하지 않아도됩니다. 나는 대안을 살펴 봤지만 기능적 방법을 찾지 못했습니다.

BaseRequestHandler는

이 가장 깨끗한 방법처럼 보인다,하지만 난 그것에 대해 이동하는 방법을 확실 해요.

return render_response('template.html', **vars) 

: 그것은 모든 표준 응답 핸들러에서 다음

self.vars['logout_link'] = users.create_logout_url(self.request.path)) 

.. 그리고의 경우,겠습니까?

장식

약간 지저분 해 보이지만 이것은 다른 옵션처럼 보인다. 나는 그것이 같은 방식으로 작동 할 것이라고 가정한다. (래퍼 함수에서 로컬 변수에 로그 아웃 링크를 할당한다.)

컨텍스트 처리 중?

저는 tipfy/jinja를 사용하고 있습니다. 나는 tipfy/jinja를 사용하고 있습니다.

경로를 더 자세히 조사해야 할 조언이 있습니까?

감사

답변

6

저는 Jinja/GAE와 비슷한 것을하고 BaseHandler + 템플릿을 사용합니다. BaseHandler :

class BaseHandler(webapp2.RequestHandler): 
    ... 
    def render_jinja(self, name, **data): 
     data['logout_url']=users.create_logout_url(self.request.uri) 
     template = jinja_environment.get_template('templates/'+name+'.html') 
     self.response.out.write(template.render(data)) 

은 그럼 예를 들어 양식 처리기에 대한 basehandler을 상속 할 수 있습니다 :

class FileUploadFormHandler(BaseHandler): 
    def get(self): 
     ... 
     self.render_jinja('contact_jinja', form=form, ... 
+1

이것은 render_response에 '전역'을 추가하는 가장 좋은 방법입니다 - 감사합니다! – Cerzi

+1

보너스로 DRY 템플릿 렌더링을 유지하는 훌륭한 방법입니다. 나는 기본적인 사이트 구조를 레이아웃하기 위해 여러 줄의 코드를 복사 할 때 내가 뭔가 잘못하고 있음을 알고 있었다. :) – Anna

4

템플릿에 추가 할 수있는 좋은 방법이 있는지 확실하지 않습니다 중 하나를 프레임 워크, 메신저를 사용하지 않는 데. 구현할 수있는 미들웨어의 형태가있을 수 있지만, 내가 말했듯이 그러한 프레임 워크에 대한 경험이 없습니다.

그러나 사용자의 올바른 URL을 303으로 알려주는 처리기로 범용 로그 아웃 URL을 사용하는 것에 동의하셨습니까?

+1

범용 로그 아웃 URL은 훌륭한 암 것두 기억 안나 감사합니다. – Cerzi