2017-12-23 36 views
1

jinja 템플릿에서 파이썬 함수를 호출하려고합니다.Jinja2 - Set (Assignments)를 사용하여 customer_function 호출

{% set key, value = call_something() %} 

을하지만, 다음과 같은 소스가 작동하지 않습니다 다음 doucmentation (http://jinja.pocoo.org/docs/2.10/templates/가 할당 참조)에서 다음의 예는 제공됩니다.

import jinja2 

@jinja2.contextfunction 
def hw(): 
    return "World" 

template = jinja2.Template('{% set test = hw() %} Hello {{ test }}!') 
template.render(name='John Doe') 

Error: ... UndefinedError: 'hw' is undefined 

문제를 해결하는 방법을 아는 사람이 있습니까?! 모두에게 감사드립니다!

답변

1

name 변수를 제공 한 것처럼 함수에서 key=value 쌍으로 제공하면됩니다. 당신이 Jinja environment를 사용하려는 경우 어떤 템플릿을 생성하기 전에, 당신은 globals dictionary에 추가 할 수 있습니다 경우 말했다 내

import jinja2 

def hw(): 
    return "World" 

template = jinja2.Template('{% set test = hw() %} Hello {{ test }}!') 
print(template.render(name='John Doe', hw=hw)) 

는 또한는, 당신은 함수가 모든 템플릿에서 액세스 할 수 싶어한다 환경.

import jinja2 

def hw(): 
    return "World" 

template = """ 
{% set test = hw() %} Hello {{ test }}! 

""" 

env = jinja2.Environment() 
env.globals['hw'] = hw 
template = env.from_string(template) 
print(template.render(name='John Doe')) 

나는 템플릿을로드하려면 여기를 from_string 방법을 사용하지만, 당신이 조사 할 수 있습니다 환경을위한 전체 loaders system가했습니다.