次のコードを WSGI サーバーで実行するとエラーが発生しますが、それ以外の場合は発生しません。
class Handler(webapp2.RequestHandler):
def __init__(self, template, *args, **kwargs):
print "Kwargs in Handler:", kwargs
self.template = template
super(Handler, self).__init__(*args, **kwargs)
class MainHandler(Handler):
def __init__(self, *args, **kwargs):
template = jinja_env.get_template("helloworld.html")
print "Kwargs in MainHandler:", kwargs
super(MainHandler, self).__init__(template= template, *args, **kwargs)
サーバー上で実行する場合は、次のようにします
from wsgiref.simple_server import make_server
server = make_server('localhost', 8000, app);
while True:
server.handle_request()
と訪問しようとするとlocalhost:8080
、私は得る
Kwargs in MainHandler: {}
ERROR:root:__init__() got multiple values for keyword argument 'template'
Traceback (most recent call last):
File "/media/Data/code/kaiwarta/env/local/lib/python2.7/site-packages/webapp2.py", line 1535, in __call__
rv = self.handle_exception(request, response, e)
File "/media/Data/code/kaiwarta/env/local/lib/python2.7/site-packages/webapp2.py", line 1529, in __call__
rv = self.router.dispatch(request, response)
File "/media/Data/code/kaiwarta/env/local/lib/python2.7/site-packages/webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "/media/Data/code/kaiwarta/env/local/lib/python2.7/site-packages/webapp2.py", line 1101, in __call__
handler = self.handler(request, response)
File "main.py", line 24, in __init__
super(MainHandler, self).__init__(template= template, *args, **kwargs)
TypeError: __init__() got multiple values for keyword argument 'template'
kwargs
( Handler に渡される前は空であることに注意してください。)
しかし、サーバーを起動せずに起動するとfoo = MainHandler()
、期待どおりに実行されます。
Kwargs in MainHandler: {}
Kwargs in Handler: {}
最初のケースで何がうまくいかないのですか?