我有一条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模板中有:在
^{pr2}$
在一个普通的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']的值,是Apple的股票名称。我在一个普通的python文件中运行了相同的代码,它运行了,我还试图运行另一个函数,它返回了Jinja中数字的美元值,并且运行了(可能是因为它只返回一个值)。为什么查找函数在模板中不起作用?在