Blog Post Archive

Gracious E-Mail Bounce Handling in Django with Postmark

When a user signs up on your website with an invalid email address, how do you let them know? In most cases, the bounces go into the inbox of an admin who ignores them, or even worse they don't go into any monitored inbox. Recently I've started using a 3rd party for my email delivery, which has made dealing with bounced emails much easier both for me and my customers. Read on to see how I integrated Postmark's bounce API with Django, and implemented a user-friendly alert on DjangoSites.org when signup emails bounce.

Update Your DjangoSites Screenshots When You Want

I often get asked to update website screenshots over at DjangoSites because somebody has re-designed their website, or the screenshot showed a cross-browser bug in their code. I'm now pleased to announce that screenshots can be renewed on-demand by website owners! Read on for more information.

Django Site of the Week: The A.V. Club

It's been a while, but the Django Site of the Week is back. This week I spoke to Tom Tobin, developer at satire news site The Onion, about their Django-powered site The A.V. Club. Originally a Drupal website, Tom and his team converted the site to Django over a period odds three months. So how do they handle a million unique views a month? Read the article to find out.

The Django Deployment Survey: How Are You Hosting Django Websites?

What's the most popular method of deploying Django powered websites? Recently, the officially sanctioned method was selected to be mod_wsgi with Apache. However, there are Django powered websites out there that are using a plethora of other methods to put websites in front of viewers.

A change for DjangoSites has just been made public that will allow website submitters to volunteer their deployment details, so that over time detailed statistics can be gathered. If your website is listed at DjangoSites, you can click the 'Edit' link right away to let us know what you're using. If you aren't yet listed, the submission form also lets you provide those details.

The results will not be shown alongside your DjangoSites listing. Instead, once there are more than a handful of responses I will publish aggregated figures for public consumption. Read on for a little more information!

Django Site of the Week: Deskography

Seeing how other people work is something that seems to be of interest to most developers. Whether it's because they want to become better workers themselves or because they're somewhat voyeuristic is open to debate - either way, Django-powered website Deskography is a well-designed social desk-sharing website. This week, I spoke to Gustaf Sjöberg of Distrop to find out why they chose Django to power Deskography, and what it's allowed them to do. You can read the interview over at the Django Site of the Week.

Full-text searching in Django with PostgreSQL and tsearch2

Recently, I have wanted to improve the searching ability in a number of my Django projects. I've often added a search box that simply does an icontains filter, which works fine for small sites but doesn't scale due to the inefficiency of matching text with basic SQL queries. The plus side of an icontains filter is that it works on all of Django's database backends (with the exception of SQLite, which works but in a case-sensitive way), so it can be useful for pluggable applications to implement. I wanted something that could do some heavier lifting, so I looked into tsearch2 - a PostgreSQL plugin that provides full-text indexing and searching that's twice as fast as standard icontains filters. On DjangoSites I managed to reduce my search queries to half their original time, with improved accuracy. Read the full article to find out how.

Django Site of the Week: ForecastWatch

Eric Floehr is the man behind ForecastWatch and ForecastAdvisor, two Django-powered weather websites that aggregate and analyse weather forecasts to compare their accuracy on an ongoing basis. This week, I spoke to Eric about the history behind his sites, how he handles massive data sets, and his conversion from Ruby on Rails to Django. You can read all about it over at the Django Site of the Week.

Django Site of the Week: ShutterCal

ShutterCal is a photo sharing site with a difference - it encourages contributors to upload one photo every day to help people reach a goal: whether that may be to improve their photography, watch themselves evolve over a year, or remember people and places they visit. ShutterCal started in 2007, and this week I spoke to developer Dan Ferrante to find out why he chose Django, some of the challenges he's faced, and how he uses Django and other open-source software to make his life easier. You can read more over at the Django Site of the Week.

Django SOTW Moving to Mondays

To better fit with both my own way of doing things and with general web browsing patterns of the Django SOTW public, I'm moving the SOTW to Mondays rather than Saturdays. Also, I've finally succumbed to the forces and I've joined Twitter so you if that's your kinda thing then come and say hi!

Django Site of the Week: Represent

Represent is a new website prototype from the New York Times that provides New York residents with information about the whereabouts of their elected representatives. What's interesting about this website is that it's one of the first large-scale sites to implement GeoDjango for spatially-aware applications. This week, I spoke with Derek Willis to get some details on their implementation of a Django project at one of the worlds' most famous newspapers. You can read the entire interview over at the Django site of the Week website.

Django Site of the Week: EveryBlock

The Django Site of the Week is back after a Christmas-induced break with an interview with Adrian Holovaty. Adrian is no stranger to Django, and his name is known throughout the community as one of the brains behind Django's birth and subsequent open-source release. His latest project EveryBlock is the evolution of an earlier mashup, chicagocrime.org, which won Adrian a number of awards. So what are the driving forces behind EveryBlock? I recently spoke with Adrian to find out.

Django Site of the Week: Ooh-Ga-Boo-Ga

The second Django Site of the Week is online. This week it's Satchmo website extraordinaire Ooh-Ga-Boo-Gah.

Dynamic ModelForms in Django

Since 'newforms' became the norm within Django, there seems to have been some confusion relating to dynamic forms that relate specifically to a model.

The basic way to handle forms is to use a ModelForm for simple single-model-related forms, and Form instances for everything else, including more advanced Model-based forms. Many people seem to forget, however, that a ModelForm or Form instance can be manipulated after it's created.

In this blog post, I have included a design pattern I've recently used that should be of use to others who want to tweak their ModelForm instances at runtime.

Django Site of the Week

Since I started DjangoSites over a year ago, the response has been fantastic. I used to approve a handful of websites a week, recently it's more like a half-dozen a day.

I've decided that a bunch of those websites are just awesome, and I wanted to have a chat with the owners of those sites and share their stories with the Django Community. Without further ado, I would like to introduce the Django Site of the Week. The first featured website is Disqus, and an article has been published at the SOTW website based on my interview with Daniel Ha, one of the founders.

Business Cards!

I've had a few meetings recently relating to Django, so I figured I should have some of my own business cards. I went with a nice simple design with sparse information, although these ones are straight off a digital printer so colour quality isn't quite what I wanted. For the next batch (when I have more time up my sleeves) I'll go offset printing for sure.

I also picked up a Moleskine notebook, it's great for taking notes and keeping ideas & wireframes. Much easier than the A4 book I used to lug around.

More...

Want to see more? Check out the yearly archives (above left).