从Python函数返回数据以用于Jinja2模板(Flask)

从Python函数返回数据以用于Jinja2模板(Flask),python,flask,jinja2,Python,Flask,Jinja2,我正在尽我最大的努力学习Python,我想我能学好,但我被困在这里了 我正在从OMDB API中提取数据。我希望返回的数据填充我正在使用Flask制作的站点的模板 到目前为止,我从API获得的数据与以下代码相当: import requests class Movie(object): def __init__(self, **kwargs): for key, val in kwargs.items(): setattr(self, key.

我正在尽我最大的努力学习Python,我想我能学好,但我被困在这里了

我正在从OMDB API中提取数据。我希望返回的数据填充我正在使用Flask制作的站点的模板

到目前为止,我从API获得的数据与以下代码相当:

import requests


class Movie(object):
    def __init__(self, **kwargs):
        for key, val in kwargs.items():
            setattr(self, key.lower(), val)


def search():
    base_url = 'http://www.omdbapi.com/?'
    title_search = 't={}'.format(raw_input('Search for a movie title. '))
    url = '{}{}&y=&plot=&short&r=json&tomatoes=true'.format(
           base_url, title_search)
    omdb_url = requests.get(url)
    movie_data = omdb_url.json()

    movie = Movie(**movie_data)

    print movie.title
    print movie.plot
    print movie.director
    print movie.rated
    print movie.imdbrating
    print movie.tomatofresh

search()
我遇到的难题是如何将当前正在打印的值(movie.title、movie.plot等)获取到我的flask模板中。到目前为止,我有:

from flask import Flask, render_template

app = Flask(__name__)


@app.route('/')
def index():
    context = {'title': movie.title, 'plot': movie.plot,
               'director': movie.director, 'rated': movie.rated,
               'imdbrating': movie.imdbrating,
               'tomatofresh': movie.tomatofresh}

    front_page = render_template('index.html', **context)
    return front_page
在我的模板中,我有类似{{movie.title}的东西,这似乎是不起作用的地方。如果我只是将模板保留为html,render_template('index.html')的渲染效果很好。但是,我不知道如何将数据从API获取到这些模板区域。对不起,如果这是愚蠢的。这是我在这里的第一个问题。提前感谢您的帮助

render_template('index.html', **context)
这是一条重要的路线<代码>**上下文控制传递给模板的内容。它的键是可用变量的名称。要在模板中包含
movie.title
的值,请使用

{{ title }}
或者,您可以从
索引
中完全删除
上下文
,然后调用

render_template('index.html', movie=movie)
这将允许模板访问名为
movie
的变量。然后,您可以使用

{{ movie.title }}

谢谢,迪恩。我感谢你的帮助。在一些人的帮助下,我能使它工作起来。我不知道如何从搜索中返回数据,正如您所指出的,当我将movie.title设置为title时,我正在将其放入模板中。我还需要从search()函数返回movie,并在index()函数中调用movie=search()。