Python函数在Jinja模板中工作不正常

Python函数在Jinja模板中工作不正常,python,flask,jinja2,Python,Flask,Jinja2,我有一个python函数:- def lookup(symbol): """Look up quote for symbol.""" # reject symbol if it starts with caret if symbol.startswith("^"): return None # reject symbol if it contains comma if "," in symbol: return None

我有一个python函数:-

def lookup(symbol):
    """Look up quote for symbol."""

    # reject symbol if it starts with caret
    if symbol.startswith("^"):
        return None

    # reject symbol if it contains comma
    if "," in symbol:
        return None

    # query Yahoo for quote
    # http://stackoverflow.com/a/21351911
    try:
        url = "http://download.finance.yahoo.com/d/quotes.csv?f=snl1&s={}".format(symbol)
        webpage = urllib.request.urlopen(url)
        datareader = csv.reader(webpage.read().decode("utf-8").splitlines())
        row = next(datareader)
    except:
        return None

    # ensure stock exists
    try:
        price = float(row[2])
    except:
        return None

    # return stock's name (as a str), price (as a float), and (uppercased) symbol (as a str)
    return {
        "name": row[1],
        "price": price,
        "symbol": row[0].upper()
    }
我将其导入到我的Jinja模板中:-

app.jinja_env.globals.update(lookup = lookup)
在普通python文件中,这是:-

print(lookup("NFLX"))
产生输出:-

{'price': 162.43, 'symbol': 'NFLX', 'name': 'Netflix, Inc.'}
但在我的模板中,这是:-

{% set stock = lookup[info['stock']] %}
{{stock['price']}}
给出一个错误:-

jinja2.exceptions.UndefinedError: 'function object' has no attribute 'AAPL'
AAPL是info['stock']的值,是苹果的股票名称。我在一个普通的python文件中运行了相同的代码,它运行时,我还尝试运行另一个函数,该函数在Jinja中返回数字的usd值,它运行时(可能是因为它只返回一个值)。为什么查找功能在模板中不起作用

一个简单的语法修复:

{% set stock = lookup( info['stock'] ) %}  # round brackets for function calls

否则:您试图以
dict
的形式访问“查找”中的
键的
值,它是一个函数对象而不是一个字典,是否执行以下操作<代码>{%set stock=lookup(info['stock'])%}
注意圆括号而不是方括号。非常感谢您,先生!真不敢相信你犯了这么愚蠢的错误!