Successfully reported this slideshow.
Method-based viewsin Django applications Gary Reynolds Touch Technology @goodtune bitbucket.org/goodtune github.com/goodtune
Refresher• Last time we looked at building up a library which will help save us some boilerplate• It incorporated better form ﬁelds, simple decorated mixins to enforce authentication, and a few other niceties
This time • What if we need to deploy the same application multiple times? • In our URLconf we could point to the applications urls.py as many times as we need...from django.conf.urls.defaults import patterns, urlurlpatterns = patterns(, url(r^usual-use/, myapp.urls), url(r^it/makes/sense/here/too/, myapp.urls),)
Issues• If your application requires conﬁguration at run-time, you probably use a custom settings.MYAPP_VAR or similar?• That will usually apply globally, not per mount point.• If the application was an instance with it’s own state, the issue goes away.
Basic anatomyclass MyApp(object): def __init__(self, name=myapp, app_name=myapp): self.name = name self.app_name = app_name def get_urls(self): urlpatterns = patterns(, url(r^$, self.index, name=index), ) @property def urls(self): return self.get_urls(), self.app_name, self.name def index(self, request): return HttpResponse()
Let’s see it in practice
Horses for courses• This book store is missing a view for the details of a book.• It really is an admin application, allowing authenticated creation and updating of Book instances by authenticated users.• Lets use inheritance to split the functionality.
Subclass our application
Real world example• Tournament Control is an application for managing sporting competitions • Scheduling ﬁxtures • Allocating matches to grounds & timeslots • Recording results and automatic ladder updates
Tournament Control• Shameless plug • http://www.sydney.touch.asn.au/ • http://www.touchsuperleague.org.uk/ • http://www.touchworldcup2011.co.uk/• We’re interested in Touch Superleague because they run multiple application instances - they have venues in Edinburgh, Cardiff, and Jersey.
Lets look at the front-endwww.touchsuperleague.org.uk/edinburgh/draws-ladders
• Sample project can be obtained from bitbucket.org • bitbucket.org/goodtune/sydjango- example-two• This presentation can be downloaded from SlideShare • slideshare.net/goodtune/method-based- views-in-django-applications-14050952