调用2个参数崩溃,抱怨它需要1个参数

时间:2013-11-20 06:25:24

标签: python google-app-engine

为什么以下对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)

1 个答案:

答案 0 :(得分:0)

def jinja_render(template, **params):

表示它只接受一个非命名参数,并且所有参数都应该是命名参数。要修复此错误,您可以调用此函数

jinja_render('welcome.html', username = 'test')

当我们这样调用时,welcome.html是一个非命名参数,其中test是一个命名参数,参数名称是username。还有另一种方法可以称之为

jinja_render('welcome.html', **{'username': 'test'})

这样我们就可以将字典中的值作为命名参数解包到函数中。