2011-03-29 2 views
2

내가 뭘 잘못했는지 알 수 없습니다. GAE 데이터 저장소에 몇 가지 항목이 있습니다. Jinja2를 가져 왔습니다. Jinja2를 사용하여 페이지에 데이터 스토어 항목을 표시하려고합니다. Jinja2 렌더링 함수를 호출하는 바로 가기 함수를 만들었습니다.Jinja2를 사용하여 GAE 데이터 저장소의 데이터를 렌더링 할 수 없습니다.

def render_template(response, template_name, vars=dict()): 
    template_dirs = [os.path.join(root(), globals['templates_root'])] 
    env = Environment(loader=FileSystemLoader(template_dirs)) 
    try: 
     template = env.get_template(template_name) 
    except TemplateNotFound: 
     raise TemplateNotFound(template_name) 
    content = template.render(vars) 
    response.response.out.write(content) 

이렇게이 함수에 전달해야 할 것은 템플릿 파일 이름과 변수가있는 사전이 있습니다. 나는 다음과 같이이 함수를 호출 :

class MainHandler(webapp.RequestHandler): 
    def get(self, *args, **kwargs): 
     q = db.GqlQuery("SELECT * FROM Person") 
     persons = q.fetch(20) 
     utils.render_template(self, 'persons.html', persons) 

Person은 다음과 같다 모델, 거기에 공상 아무것도 :

:

class Person(db.Model): 
    first_name = db.StringProperty() 
    last_name = db.StringProperty() 
    birth_date = db.DateProperty() 

내가 render_templatepersons 사전을 통과하려고,이 오류가 발생합니다

TypeError: cannot convert dictionary update sequence element #0 to a sequence 

그리고 렌더링하지 않습니다. {} 공백을 persons 인수로 전달하면 내 데이터가 렌더링되지만 분명히 표시되지 않습니다. 내가 뭘 잘못 했니? 나는 내가 놓친 작은 것이 있다고 확신하지만 정확히 무엇이 있는지 전혀 모른다. 감사!

답변

2

dict를 전달하는 대신 render_template 함수에 엔티티 목록을 전달 중입니다. 같은 것을 시도하십시오 utils.render_template(self, 'persons.html', {'persons': persons})

+0

물론입니다! 나는 그걸로 열망했다. 감사! –

관련 문제