Python函数在Jinja模板中工作不正常
我有一个python函数:-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
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'])%}
注意圆括号而不是方括号。非常感谢您,先生!真不敢相信你犯了这么愚蠢的错误!