Work on class-based views, now part of Django 1.3. For a backport to Django 1.2, see https://github.com/sorl/django-cbv
Work on ticket #6735.
$ python setup.py install
Or for the moment:
$ pip install -e [email protected]:bfirsh/django-class-based-views.git#egg=django-cbv
Inherit your own class-based views from existing ones listed below:
class AuthorDetail(class_based_views.DetailView):
queryset = Author.objects.all()
Declare your view in your URLs like you already do for classic views:
import views
from django.conf.urls.defaults import *
urlpatterns = patterns('',
url(r'^detail/author/(?P<pk>\d+)/$',
views.AuthorDetail(),
name="author_detail"),
)
Note: you must declare an instance of the class in your URLs, not the class in order to avoid shared attributes across requests.
ListView: Render some list of objects, set by self.queryset
.
This can be any iterable of items, not just a queryset.
DetailView: Render a "detail" view of an object. By default this is a
model instance looked up from self.queryset
, but the view will support
display of any object by overriding self.get_object()
.
CreateView: View for creating an object.
UpdateView: View for updating an object.
DeleteView: View for deleting an object retrieved with self.get_object()
.
HTTP support: note that you can use POST or PUT HTTP verb for creating/editing an object and POST or DELETE for deleting an object.
TODO