So one of the nice things with method-based views in Django is the ability to do this sort of thing to load a view at the path frontend.views.home:
urlpatterns = patterns( 'frontend.views', url(r'^$', 'home', name='home'), )
Unfortunately, if you’re using class-based-views, you can’t do this:
urlpatterns = patterns( 'frontend.views', url(r'^$', 'HomeView', name='home'), )
And instead you had to resort to importing the view and calling HomeView.as_view(). Sort of annoying when you didn’t want to import all of those views.
It turns out however that overloading the code to resolve HomeView is not that difficult, and we can do it with a pretty straightforward monkeypatch. This version uses the kwargs argument of url() to pass keyword arguments to as_view().
from django.conf import urls from django.views.generic import View class ClassBasedViewURLPattern(urls.RegexURLPattern): """ A version of RegexURLPattern able to handle class-based-views Monkey-patch it in to support class-based-views """ @property def callback(self): """ Hook locating the view to handle class based views """ view = super(ClassBasedViewURLPattern, self).callback if isinstance(view, type) and issubclass(view, View): view = view.as_view(**self.default_args) self.default_args = {} return view urls.RegexURLPattern = ClassBasedViewURLPattern