class View(object): def __init__(self, controller): self.controller = controller() def as_template(self, template): def view(request, *args, **kwargs): return TemplateResponse( request, template, self.handler(request, *args, **kwargs) ) return view def handler(self, request, *args, **kwargs): method = request.method.lower() handler = getattr(self.controller, method) return handler(request, *args, **kwargs) #Use a none derived class with http methods that return simple data structures. class HomeView(object): def get(self, request): return { 'foo' : 'bar' } #In your url confs you can specify what the view returns. Only as_template is available. url( r'^$', View(HomeView).as_template('home.html'), name='homepage' )