2016-07-12 3 views
0

장고에 사용자 정의 템플릿 필터가 있습니다. 템플릿 필터 내에서 다른 템플릿 변수에 액세스 할 수 있습니까?Django 사용자 정의 필터 조회 템플릿 변수

{{lookup_dict}} 

{% for a in my_list %} 
    {{a|my_filter:1}} 
{% endfor %} 

@register.filter 
def my_filter(obj, val): 
    # I need to access "lookup_dict" here 
    return ... 
+0

나는 대답이 아니오 또는 믿을 수없는 어려움을 가진 예라고 상상합니다. 이와 같은 많은 문제에 직면 해 있다면 나는 args와 kwargs로 훨씬 더 유연한 Jinja2 템플릿을 조사하는 아이디어를 즐겁게 제안합니다. – Steve

답변

1

해결 방법은 태그를 필터 대신 템플릿 태그로 변경하는 것입니다. 필터는 원자 적이며 문맥과 무관해야합니다. 템플릿에서 다음

# takes_context allows you access to the outer template context 
@register.simple_tag(takes_context=True) 
def my_tag(context, obj, val): 
    lookup_dict = context['lookup_obj'] 
    # Do something with lookup_dict, obj, and val 
    # Return something that will be rendered in the template 
    return ... 

을 : : 이런 식으로 뭔가 작업을해야이 대신 변수 ({{)의 태그 ({%)이 지금이라고

{% for a in my_list %} 
    {% my_tag a 1 %} 
{% endfor %} 

참고.

관련 문제