Question

I got a simple app on google app engine using django and I have two classes that look pretty much identical, but one of them crashes with TypeError.

Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3211, in _HandleRequest
    self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3154, in _Dispatch
    base_env_dict=env_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 527, in Dispatch
    base_env_dict=base_env_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2404, in Dispatch
    self._module_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2314, in ExecuteCGI
    reset_modules = exec_script(handler_path, cgi_path, hook)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2212, in ExecuteOrImportScript
    script_module.main()
  File "C:\Development\fuluus\momadthenomad\main.py", line 20, in main
    run_wsgi_app(application)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\webapp\util.py", line 97, in run_wsgi_app
    run_bare_wsgi_app(add_wsgi_middleware(application))
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\webapp\util.py", line 115, in run_bare_wsgi_app
    result = application(env, _start_response)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 500, in __call__
    handler = handler_class()
TypeError: NotFoundPage() takes exactly 1 argument (0 given)

My class looks like this (main.py):

import os
import datetime

from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app

class BasePage(webapp.RequestHandler):
   def initialize(self, request, response):
       webapp.RequestHandler.initialize(self, request, response)
       dir = os.path.join(os.path.dirname(__file__), "../templates")
       self.template_path = os.path.abspath(dir)

   def render_to_response(self, page, template_values):
       page_path = os.path.join(self.template_path, page)
       self.response.out.write(template.render(page_path, template_values))


class DefaultPage(BasePage):
   def get(self):
      visitor = Visitor()
      visitor.ip = self.request.remote_addr
      visitor.put()

      page = Page()
      page.title = "MY PORTAL"
      page.subtitle = "Home"
      page.name = self.request.path

      visitors_query = Visitor.all().order('-added_on')
      visitors = visitors_query.fetch(20)

      self.render_to_response("main.html",
        {
            "page": page,
            "visitors":  visitors,
        })


def NotFoundPage(BasePage):
   def get(self):
      page = Page()
      page.title = "MY PORTAL"
      page.subtitle = "Not Found"
      page.name = self.request.path

      self.render_to_response("empty.html", 
        {
           "page": page,
        })

application = webapp.WSGIApplication(
                                    [('/', DefaultPage),
                                     ('/index.html', DefaultPage),
                                     ('/.*', NotFoundPage),
                                     ],
                                    debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

When I go to /index.html, everythin works perfectly. But when I go to /not-found.html, it crashes with the error. I can't figure out what is wrong with this script. Maybe I am overlooking something. Please help.

Was it helpful?

Solution

def NotFoundPage(BasePage):

should be:

class NotFoundPage(BasePage):
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top