-
Reusable Apps, Part 3: Back-Seat Drivers
This is yet another continuation of a series on reusable apps. The first part addresses the idea of reusable apps (Reusable Apps, Part 1: Fact or Fiction?), and the second describes several extremely useful ones bundled with Django itself (Reusable Apps, Part 2: Keeping it in the Family).
blog comments powered by DisqusCommunity-Driven Development
As an open-source project, Django's development is obviously driven by the needs of its users; however, core development of this project concentrates on internal features rather than more conspicuous components such as the reusable apps we've been discussing.
Like the core application, Django-specific reusable apps are often open-source efforts, fueled by the time and requirements of the people who actually use them. When one of these general-purpose components reaches a level of stability and maturity that make it useful in production environments, it can provide a powerful stepping stone for making development more efficient.
Django-CMS
Perhaps the most flexible content management system available as a Django app, Django-CMS is such a complex project that it's actually a large set of sub-components, many being, themselves, reusable apps.
This package comes with some very powerful overridden admin templates, the result of which is a top-notch interface for creating and managing CMS pages. As if this weren't enough, Django-CMS is built with internationalization in mind, and supports multiple page versions for different languages with no modification.
Django-CMS' plugin system provides a fast and efficient way to build simple administration interfaces by writing -- you guessed it -- specifically-formatted apps that provide a few standard methods for the CMS to display the data you assign to the app. Examples we've written include easily embedding YouTube videos, formatted call-to-action boxes, and rotating advertisements.
Satchmo
As Django's namesake is jazz guitarist Django Reinhardt, Satchmo's is the great jazz trumpet Louis Armstrong. This app is, by itself, an incredibly versatile eCommerce solution.
Another reusable heavyweight, Satchmo is often used as its own Django site, as the example sites included with its distribution are very complete, with only minor template work required to brand and clean them up to production quality.
Built to address a staggering array of common eCommerce requirements and issues, Satchmo's feature list includes automatic sales tax and shipping rate calculation, sale prices with start and end dates, configurable products (size, color, etc.), downloadable products, featured products, quantity tracking, configurable order statuses and alerts, and multiple payment gateway support.
We've deployed several Satchmo sites, and worked directly with the Satchmo team. This is a powerful and well-supported app with a great feature set and a bright future.
Minor Deities
While there are a few such juggernauts making their presence felt, there are many more small utility apps that make their way into a far greater number of sites, toiling away behind the scenes and saving many developers many hours of headaches.
django-registration
Users. Users always want to do things. One of the most common things users want to do is registering for your site. One of the most common things users subsequently do is forget their passwords. django-registration provides a quick and simple framework that enables user registration, log in, log out, and profile updating with nothing but template work left for the developer. Users and developers, rejoice!
django-tinymce
Another thing users love to see is WYSIWYG editors. Now, these aren't altogether the most painful thing in the world, but shoehorning them into a prebuilt framework can be really, really ugly. Luckily, django-tinymce makes this a moot point: By introducing a new model field type, all you have to do is declare a field as the right type, link the styles and javascript in your template, and your users can see what they'll get.
django-haystack
Yet another common user requirement: Searching. Who's going to read your content if they can't find it? django-haystack can help: Acting as a standard front-end, this app lets you use a familiar interface on various projects, even if the search back-ends are different.
Reporting from the Trenches
The apps we've covered here are among those we've found the most useful; however, we are only one shop, and haven't quite scoured the whole web yet. Please feel free to post your own favorite apps!