My two favorite things about Django are Python and the quality of the plugins (which reflects on the quality of Django itself and its community). Here is my personal top 5 of the most useful Django libraries.
I haven't included Django admin as it's already part of Django "core".
1.Django Debug Toolbar
The Django Debug Toolbar gives you plenty of information during development. I mainly use it to check the generated SQL queries and how long they are taking. In my opinion, that plugin deserves to be part of Django (within the contrib module). I have never worked on a Django application that didn't include it !
Factory Boy is a library to build and create Model subclasses instances. This is useful for automated tests and for fixtures. For example if you have an Article model with 10 required fields, you could simply do this in a test:
class MyTest(...): def test_article_update(): article = ArticleFactory.create(title="The title") # do something meant to update the article title self.assertEquals(article.title, "Updated title")
The factories let you specify the necessary information (the title in this case) without having to specify the values of all the required fields.
I find WebTest extremely useful to test forms and different behaviours depending on the logged-in user.
django-suit makes your admin looks nice and offer a few interesting features such as ordering. It takes 5 minutes to try it out; come on, give it a go.
FeinCMS applies the "less is more" principle to its extreme. FeinCMS is a CMS that does nothing when you install it. It's a CMS framework and it's awesome. As a matter of fact, this very blog is built with FeinCMS.
With FeinCMS you create your customised blocks of content model called "content types" and specify what they are made of and where they can be used. For example, this article is made of RichText, Code and Image blocks. The Image content type has one field for the image and one for the alternative text. I could add an author field to the Image content type, make it a foreign key, a URL or anything I fancy really.
The flexibility of FeinCMS means that you can use it within any application where you need to give users the possibility to add blocks of content (and not just a predefined set of image and rich text fields).
On this topic
Hero picture, race - by Paul Chessare via Free Images