2017-11-07 17 views
0

API에서 데이터를 가져온 다음 Jinja2를 사용하여이 데이터를 HTML 파일에 삽입하는이 함수가 있습니다. 이 데이터를 내 newsletter.html에 표시하고 이메일로 보내주십시오. 전송 스크립트에서Jinja2가 newsletter.html에서 작동하지 않습니다.

# movie_finder.py 

movie_list = [] 
for item in now_playing['results']: 
    if genre_id in item['genre_ids']: 
     movie_list.append(item['original_title']) 

print movie_list 

# Create jinja2 environment 
try: 
    env = Environment(loader=PackageLoader('movie_finder', 'templates')) 
    template = env.get_template('newsletter.html') 
    rend = template.render(info=movie_list) 
    print "Templating successful" 
except: 
    print "Templating fail" 
    return "Templating fail" 



find_movies_with_genre(API_KEY, 878) 

:

신사와 목록 및 템플릿으로 데이터를 가져 오기 : 여기 enter image description here

는 몇 가지 관련 조각입니다 : 모든 에서 떨어져 미세 이런 일을 작동 이메일 (그렇지 않으면 잘 작동합니다)을 사용하면 간단히 수행 할 수 있습니다.

from scifi_finder import find_movies_with_genre 
,210

템플릿 :

<!-- Newsletter template by https://github.com/derekpunsalan/--> 
 

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head> 
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
 
    <meta name="viewport" content="width=device-width"/> 
 

 
    <!-- For development, pass document through inliner --> 
 
    <link rel="stylesheet" href="css/simple.css"> 
 

 
    <style type="text/css">

출력 print movie_list : render()를 호출 할 때 올바르게 변수를 전달하지 않는

[u'Thor: Ragnarok', u'Blade Runner 2049', u'War for the Planet of the Apes', u'Geostorm'] 
+0

질문에 템플릿 파일을 포함하십시오. 문제가있을 수 있으며 문제의 전체 그림을 얻는 것이 적절합니다. – bgse

답변

1

, 여기 당신이하고있는 일입니다 :

template.render(info=movie_list) 

당신은 변수 info를 전달하는, 아직 템플릿에, 당신은 movie_list 참조됩니다

{% for item in movie_list %} 
    {{ item[0] }} 
    {{ item[1] }} 
{% endfor %} 

이 당신이 전달하는 변수를 참조 할 필요가 작동하지 않습니다, 개인적으로 나는이 방법을 선호한다 : 당신이 이미 그것을 가지고

template.render(movie_list=movie_list) 

... 그리고 템플릿 ...

{% for item in movie_list %} 
    {{ item[0] }} 
    {{ item[1] }} 
{% endfor %} 

을 .... 당신은뿐만 아니라 당신의 템플릿에 ...

{% for item in info %} 
    {{ item[0] }} 
    {{ item[1] }} 
{% endfor %} 

... 사용하고 그대로 함수 호출을 유지하지만, 내가 다시 주 나중에 읽을 때 개인적으로는 첫 번째 변종 덜 혼란을 찾을 수 있습니다.

+0

시간을내어 주셔서 감사합니다. 슬프게도 출력은 여전히 ​​동일합니다! –

+0

@ MartaP. 귀하의 질문에 전체 템플릿을 포함 할 수 있습니까? 그리고 아마도'print movie_list' 명령문의 결과물입니까? – bgse