Add a mixin for views that may respond with both json and html.
Use the CBV more like they are meant to be, and use the JSONMixin.