2012-12-02 2 views
1

나는 포함 할 때마다 임의의 문자열이 필요한 부분 템플릿이 있습니다. 내가 포함 당 한 번 이상 동일한 임의의 문자열에 액세스해야하고 부분이 포함될 것임을 확신하지 못합니다.임의의 문자열을 템플릿 컨텍스트에 추가하는 간단한 방법

나는 현재 상황

@register.tag 
def randomgen(parser, token): 
    return RandomgenNode() 


class RandomgenNode(template.Node): 
    def render(self, context): 
     context['randomgen_str'] = os.urandom(16).encode('hex') 
     return '' 
이 날 부분의 시작 부분에 {% randomgen %}을 수행 할 수 있습니다

내가 문자열이 필요 {{ randomgen_str }}에 추가하기 위해이 일을 해요. 이것은 반드시 나쁜 것은 아니며,이를 수행하기위한 선호되는 방법이 있는지를 알지 못했습니다.

감사

하여 포함 템플릿가 포함 태그에 싸서 한 경우
+0

안녕 아담, 무엇을 부분 템플릿 의미합니까? 템플릿 태그를 통해 포함 된 템플릿에서? 주요 질문은 템플릿이보기에 의해 생성 된 원래 컨텍스트에 액세스 할 수 있는가입니다. – garromark

+0

예 {% include %} 태그를 사용하기 만했습니다. 나는 단지 "부분적인"템플릿과 같은 의미였습니다. 그것은 정확한 용어가 아닐 수도 있습니다. 네, 원래 컨텍스트에 액세스 할 수 있지만 포함 할 때마다 별개의 문자열이 필요합니다. 포함되지 않은 수는 포함됩니다. –

+0

게시 한 답변을 살펴보고 귀하의 사례를 다루고 있는지 알려주십시오. – garromark

답변

1

garromark 덕분에 최고의 솔루션을 찾을 수있었습니다. 할당 태그는 내가 원했던 것과 똑같습니다. 나는 임의의 문자열을 필요한 곳에

@register.assignment_tag 
def randomgen(): 
    return os.urandom(16).encode('hex') 

그런 다음 내 템플릿에 내 포함 된 템플릿

{% randomgen as randomgen_string %} 

의에 상기 다음을 사용하여 다음을 사용할 수

{{ randomgen_str }} 
+0

이제 garrorark의 대답은 기본적으로 동일하게 적용됩니다. 컨텍스트가 추가 된 사용자 정의 include 태그를 사용하거나 내 방식은 사용자 정의 태그가있는 컨텍스트에 추가됩니다. –

0

는, 당신은 템플릿을 렌더링하기 전에 컨텍스트를 수정할 수 있습니다. 예를 들어

, template.html을 위해 포함 당신은 그냥 간단한 템플릿을 현재 말 :

{% include "templates/template.html" %} 

이 같은 템플릿 태그에 싸서 수 :

@register.inclusion_tag("templates/template.html", takes_context=True) 
def render_my_template(context): 
    context['randomgen_str'] = os.urandom(16).encode('hex') 
    return context 

이 당신에 액세스 할 수 있습니다 원래보기 컨텍스트는 template.html이고 randomgen_str에 추가되므로 이전과 마찬가지로 액세스 할 수 있습니다. 그리고 이전에 있었던 {% include %} 대신 {% render_my_template %}으로 전화하십시오.

+0

여기에 적절한 예절을 모르겠습니다. 당신의 대답은 제 대답으로 이끌었지만 저는 다른 것을 사용했습니다. 나는 당신에게 대답을 주겠지 만 다음 사람을 찾고 혼란스럽게하고 싶지는 않습니다. –

관련 문제