Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
A documentation tool for getting your head around Django's class based views.
Python HTML CSS JavaScript Other

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
cbv
inspector
.gitignore
.travis.yml
Makefile
Procfile
README.markdown
env.sh
license.md
manage.py
requirements.txt

README.markdown

Django Class Based Views Inspector

Use the Django Class Based Views Inspector

What's a class based view anyway?

Django 1.3 came with class based generic views. These are really awesome, and very powerfully coded with mixins and base classes all over the shop. This means they're much more than just a couple of generic shortcuts, they also provide utilities which can be mixed in the much more complex views that you write yourself.

Great! So what's the point of the inspector?

All of this power comes at the expense of simplicity. Trying to work out exactly which method you need to customise on your UpdateView can feel a little like wading through spaghetti - it has 8 separate ancestors (plus object) spread across 3 different files. So working out that you wanted to tweak UpdateView.get_initial and what it's keyword arguments are is a bit of a faff.

That's where this comes in! Here's the manifesto:

Provide an easy interface to learning the awesomeness of class based views. It should offer at least the ability to view the MRO of a generic view, all of the methods which are available on a particular class (including all inherited methods) complete with signature and docstrings. Ideally you should then be able to see where that method has come from, and any super calls it's making should be identified. Wrap this all up in a shiny front end!

Tools to consider

  • Python's built in inspect module to work out what's going on and put it in the database
  • JQuery for shinyness
  • Backbone for JS structure
  • Piston for API
  • SASS/LESS and/or Bootstrap to make CSS less painful

Installation

First you should install some OS libraries required for some packages, this can vary with each OS, but if you're on Ubuntu 14.04, then this should do the trick for you:

sudo apt-get install python-dev libmemcached-dev zlib1g-dev libpq-dev

After this, install as you normally would a Django site (requirements.txt provided).

e.g. (inside your virtualenv or whatever)

pip install -r requirements.txt

Sync the database (assuming you've got required database)

python manage.py syncdb

Run the migrations

python manage.py migrate cbv

Populate the database with fixtures

python manage.py loaddata cbv/fixtures/project.json

python manage.py loaddata cbv/fixtures/1.3.json
python manage.py loaddata cbv/fixtures/1.4.json
python manage.py loaddata cbv/fixtures/1.5.json
python manage.py loaddata cbv/fixtures/1.6.json
python manage.py loaddata cbv/fixtures/1.7.json
python manage.py loaddata cbv/fixtures/1.8.json

Run server and play around

python manage.py runserver

Testing

All you should do is:

make test

License

License is BSD-2.

Something went wrong with that request. Please try again.