【发布时间】:2015-09-10 00:27:56
【问题描述】:
我正在使用python web 框架Bottle 来生成html 模板,并且我想将一个模板变量字典从bottle 服务器传递到页面。 documentation 说可以这样做:
@route(’/hello/<name>’)
@view(’hello_template’)
def hello(name=’World’):
return dict(name=name)
并且@view 模板应该可以访问name。我想用搜索结果字典做同样的事情,在这里简化:
@get('/search')
@view('search')
def search():
// load results
// return results
results = {'1': {'param1': 'val1', 'param2': 'val2', 'param3': 'val3'},
'2': {'param1': 'val1', 'param2': 'val2', 'param3': 'val3'}
}
return results
但我收到此错误:
TypeError('template() keywords must be strings',)
有了这个回溯:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/bottle.py", line 862, in _handle
return route.call(**args)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/bottle.py", line 1732, in wrapper
rv = callback(*a, **ka)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/bottle.py", line 3619, in wrapper
return template(tpl_name, **tplvars)
TypeError: template() keywords must be strings
我可以找到类似的问题,但他们都认为参数可以正确传递,所以我决定问。谢谢!
【问题讨论】:
-
template() keywords must be strings你的关键字是字符串吗? -
我不确定——我没有明确调用
template(),因为我使用的是@view装饰器 -
尝试将字符串转换为int:
{1: {'param1': 'val1', 'param2': 'val2', 'param3': 'val3'}, 2: {'param1': 'val1', 'param2': 'val2', 'param3': 'val3'} } -
您也可以发布您的模板吗?
标签: python dictionary web bottle templating