I’ve always thought that the sign of a healthy Open Source project is a vibrant ecosystem around that project. That’s why I’ve been thrilled to see that there are a bunch of cool third-party Django add-ons popping up. I thought I’d take a few minutes and give a shout out to some of my favorites.
django-openid
OpenID evangelist and Alpha Geek Extraordinare Simon Willison wrote this set of tools which lets your Django application become an OpenID consumer.
Once you’ve wired the app up in your settings file, you’ll have access to a user’s OpenID information from your views:
def example_view(request):
if request.openid:
return HttpResponse("OpenID is %s" % escape(str(request.openid)))
else:
return HttpResponse("No OpenID")
You can read more in the documentation, see in in action on Simon’s site, and provide feedback on the mailing list.
django-registration
Written my friend and co-worker James, django-registration is a simple generic user-registration app that compliments the built-in Django auth system. It couldn’t be simpler; you just include the registration URLs and point your users to /accounts/register/. It Just Works™.
For more information you can check out the ReadMe.
django-tagging
In just a few lines of code you can add tagging to any model you like and easily pull out objects by tag usage, tag clouds for particular objects, etc. A bit of a self-link — I contributed a smidge of code — but it’s really an awesome app.
You might start a del.icio.us clone with something like:
from django.db import models
from tagging.fields import TagField
class Bookmark(models.Model):
title = models.CharField(maxlength=200)
url = models.URLField()
tags = TagField()
… which would let you deal with tags in a very easy manner:
>>> b = Bookmark.objects.get(...) >>> b.tags = "foo bar baz"
The main developer, Jonathan Buchanan, has written fantastic documentation, and the code is totally solid.
django-voting
Another app by Jonathan. He took the one-off voting code I wrote for CheeseRater as part of my PyCon tutorial and fleshed it out into a great tool. Here’s an example from the documentation:
>>> user = User.objects.get(pk=1)
>>> widget = Widget.objects.get(pk=1)
>>> Vote.objects.record_vote(user, widget, +1)
>>> Vote.objects.get_score(widget)
{'score': 1, 'num_votes': 1}
Jeff added it to Lost-Theories earlier this week (see it in action) and tells me it couldn’t be easier.
A good way to get started might be to read about how you’d go about implementing reddit style voting for any model.
Any more?
Are there cool third-party Django tools you’ve been using lately? Leave some links in the comments; I’d love to check ‘em out!
Jeff Croft
May 22nd, 2007
5:59 p.m.
DAMMIT. You've got to be kidding me. I littlerly was half way through writing this EXACT SAME blog post. Grrrr....
Marty Alchin
May 22nd, 2007
6:13 p.m.
Well, I won't push django-values yet, because it still has a good bit of work to be done, but I do have to correct your tagging example. You have models.TagField even though it was imported simply as TagField.
Jacob
May 22nd, 2007
6:46 p.m.
Thanks for the bug fix, Marty. I actually intentionally left out django-values since I expect it to become a contrib app relatively soon; I think it'll really come into its own as a useful tool once it ships with Django.
Simon Litchfield
May 22nd, 2007
9:12 p.m.
I was pretty amazed with GeoDjango. We used it for a project recently, half expecting we'd need to add to it, but it did everything we needed straight out of the box! A great framework for doing anything funky with Google maps, geocoding, boundaries etc.
Joel Bernstein
May 22nd, 2007
11:01 p.m.
See this is the problem with Django: every time I think of a cool new idea for an add-on framework, I do a quick google search and find that someone's already done it.
James Bennett
May 23rd, 2007
1:33 a.m.
I wasn't writing about Django applications when you published this, but I was busy doing up proper packaging and documentation of the registration app; I've left the ReadMe wiki page in place, but now it just links to the documentation in SVN (which is in reST format and so can easily be transformed into whatever):
http://django-registration.googlecode.com/svn/trunk/docs/overview.txt
Jonathan Buchanan
May 23rd, 2007
9:51 a.m.
Not to turn this into a love-in, but after being unconvinced with the brilliance of my own tumblelog code, I've been investigating jellyroll...
http://code.google.com/p/jellyroll/
...and finding that it's loaded with provider-y amazingness! Time to rewrite my website, methinks.
pk
May 24th, 2007
5:02 a.m.
hey jacob, i would add http://www.aswmc.com/dbmigration/
as well. peter
fred
May 24th, 2007
7:40 a.m.
Hi Jacob, and how about django logging?
http://code.google.com/p/django-logging/
Jeremy Dunck
May 24th, 2007
5:06 p.m.
There are many django-* projects, and he can't very well list them all.
But here ya go:
http://www.google.com/search?hl=en&domains=code.google.com&q=django-+-%3Ainurl%3A%2Fsource+-...
:)
Jj
May 24th, 2007
5:09 p.m.
I was surprised with how easy it was to integrate django forum and django registration to my site.
http://code.google.com/p/django-forum/
I am still looking for a wiki solution :-/
I tried diamanda application set, but it was too much hassle to try and integrate that with a working site.
Frédéric
May 26th, 2007
11:43 a.m.
Jj, do you know Sphene Community Tools ?
Forum + Wiki
http://sct.sphene.net/wiki/show/Start/
Peter van Kampen
May 31st, 2007
1:56 p.m.
The django-tagging documentation has moved I think. See:
http://django-tagging.googlecode.com/svn/trunk/docs/overview.txt
Elizabeth
Sept. 9th, 2007
2:52 a.m.
I think that we must have a site where people can upload his components, something like djangosnippets but with the components, for example www.django-components.com ;-)
Justin
Feb. 28th, 2008
7:31 a.m.
My Django photo management application, Photologue, should be nearing a 1.0 beta release soon and anyone willing to help test it out on their platform of choice would be very much appreciated. Photologue is easy to integrate, doesn't resize or mangle your original images, allows the user to define new photo sizes right in the Django admin, provides easy Django admin thumbnails, and caches resized files for performance. The latest revisions include some nice new features like EXIF parsing, image filters, and an shell script for administration. It also serves as a drop-in photo gallery system.
http://code.google.com/p/django-photologue/