为什么以下对jinja_render()
的调用会崩溃?
def jinja_render(template, **params):
t = jinja_env.get_template(template)
return t.render(params)
class Default(webapp2.RequestHandler):
def get(self):
jinja_render('welcome.html', {'username': 'test'})
这是追踪:
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1535, in __call__
rv = self.handle_exception(request, response, e)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1529, in __call__
rv = self.router.dispatch(request, response)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1102, in __call__
return handler.dispatch()
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 572, in dispatch
return self.handle_exception(e, self.app.debug)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "C:\Users\Stefano\workspace\stefanomenci-test\test.py", line 19, in get
jinja_render('welcome.html', {'username': 'test'})
TypeError: jinja_render() takes exactly 1 argument (2 given)
答案 0 :(得分:0)
def jinja_render(template, **params):
表示它只接受一个非命名参数,并且所有参数都应该是命名参数。要修复此错误,您可以调用此函数
jinja_render('welcome.html', username = 'test')
当我们这样调用时,welcome.html
是一个非命名参数,其中test
是一个命名参数,参数名称是username
。还有另一种方法可以称之为
jinja_render('welcome.html', **{'username': 'test'})
这样我们就可以将字典中的值作为命名参数解包到函数中。