2012-06-27 4 views
4

나는 주식 webapp2 프레임 워크와 Django 템플릿 엔진을 사용하는 GAE 앱을 가지고 있습니다. 이 설정은 Django의 내장 {% url %} 템플릿 태그를 지원하지 않습니다.장고 템플릿에서 webapp2.uri_for 사용

URL을 내 템플릿에 하드 코딩하지 말고 내 템플릿 내에서 webapp2.uri_for 기능을 사용하고 싶습니다. 이것이 가능한가? 그렇다면 어떻게해야합니까? 사용자 지정 서식 태그를 작성

답변

0

네, 가능의 장고 태그의 소스 코드를 살펴있을 수 있습니다 참조하십시오. 나는 오늘 같은 질문을했고 다음 템플릿 태그로 끝났다. django "as"문법을 지원하여 django url template 태그에서 가져온 기능을 원했습니다.

from django import template 
import webapp2 

register = template.Library() 


def uri_for(parser, token): 
    """Webapp2 uri_for django template tag""" 
    bits = token.split_contents() 
    if len(bits) < 2: 
     raise template.TemplateSyntaxError("'%s' takes at least one argument (path to a view)" % bits[0]) 

    view_name = bits[1] 
    as_var = None 
    if len(bits) >= 2 and bits[-2] == 'as': 
     as_var = bits[-1] 

    return UriForNode(view_name, as_var) 
uri_for = register.tag(uri_for) 


class UriForNode(template.Node): 
    """Uri for node""" 
    def __init__(self, uri, as_var=None): 
     self.uri = uri 
     self.as_var = as_var 

    def render(self, context): 
     view = webapp2.uri_for(self.uri) 
     if self.as_var: 
      context[self.as_var] = view 
      return '' 
     return view