-1
我有一個Python功能正常工作: -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()
}
,我將其導入到我的神社模板有: -
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是信息[ '股票']的值,並且是蘋果公司的股票名稱。我在普通的python文件中運行相同的代碼,並運行它,我也嘗試運行另一個函數,它返回Jinja中的數字值,並運行(可能因爲它只是返回一個值)。爲什麼查找功能在模板中不起作用?
以下工作? '{%set stock = lookup(info ['stock'])%}'注意圓括號而不是方括號。 –
非常感謝您的先生!簡直不敢相信這麼愚蠢的錯誤! – firstlegagain1