2

I have a class 'UserHandler' that inherits from 'RestHandler', but for some reason it's not inheriting properly as I keep getting a 'AttributeError: 'UserHandler' object has no attribute 'sendJson'' error. I'm running python 2.7 btw.

Code and traceback below:

import json
import webapp2
class RestHandler(webapp2.RequestHandler):
 def dispatch(self):
 #time.sleep(1)
 super(RestHandler, self).dispatch()
 def SendJson(self, r):
 self.response.headers['content-type'] = 'text/plain'
 self.response.write(json.dumps(r))
class UserHandler(RestHandler):
 def post(self):
 r = json.loads(self.request.body)
 user = modelUser.InsertUser(r['email'], r['firebaseUid'], r['firebaseId'])
 r = modelUser.AsDict(user)
 self.sendJson(r)

Traceback:

Traceback (most recent call last):
 File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 266, in Handle
 result = handler(dict(self._environ), self._StartResponse)
 File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 1519, in __call__
 response = self._internal_error(e)
 File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 1511, in __call__
 rv = self.handle_exception(request, response, e)
 File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 1505, in __call__
 rv = self.router.dispatch(request, response)
 File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher
 return route.handler_adapter(request, response)
 File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 1077, in __call__
 return handler.dispatch()
 File "main.py", line 25, in dispatch
 super(RestHandler, self).dispatch()
 File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 547, in dispatch
 return self.handle_exception(e, self.app.debug)
 File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 545, in dispatch
 return method(*args, **kwargs)
 File "main.py", line 37, in post
 self.sendJson(r)
AttributeError: 'UserHandler' object has no attribute 'sendJson'
asked May 6, 2014 at 3:34

3 Answers 3

4

The code defined SendJson (uppercase). But subclass call sendJson. (lowercase)

answered May 6, 2014 at 3:37
Sign up to request clarification or add additional context in comments.

Comments

3

In your last few lines:

class UserHandler(RestHandler):
 def post(self):
 r = json.loads(self.request.body)
 user = modelUser.InsertUser(r['email'], r['firebaseUid'], r['firebaseId'])
 r = modelUser.AsDict(user)
 self.SendJson(r)
 ^
 Should be capitalized

Hope that helps :D

answered May 6, 2014 at 3:40

Comments

2

Capitalize the 's' (or better yet, make the function 'S' lowercase)

answered May 6, 2014 at 3:37

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.