Understanding, setting up, accessing and serving media files and static files in Django
One of my most popular Stackoverflow answers is to a question regarding the confusion between static and media files in Django. This post elaborates on that theme.
An Updated General Django Project Structure or Folder Layout
In a previous post I outlined a sane folder structure for a new Django project. Since then Django 1.5 (and 1.6) has been released along with an updated default folder structure. This post goes through some further tips on keeping your django project layout sensible.
Autodeploy Jekyll using bitbucket post-commit service hooks and Flask
A very nice and clean way to deploy a Jekyll (or any other static generated site) is to setup a very small application on your sites webserver to listen for post commit hooks from Bitbucket. This allows you to have your site automatically updated and regenerated every time you push to your repository. This post shows you how.SuspiciousOperation Invalid HTTP_HOST header with Django
I was recently getting this error while trying to deploy a new project to production. It turns out that due to a recent security update, you need to make sure that the incoming host name in your request is valid.
A Custom Cropping Engine With sorl-thumbnail
Sorl-thumbnail has a sensible crop function in the default engine, but sometimes you need a little more control over the results. This post provides a custom cropping PIL engine that can be used to return specific, i.e. from (x1, y1) to (x2, y2), cropped thumbnails
Automatically generating admin URLs for your objects
It’s very easy to generate URLs to your django models using
get_absolute_url()
, but you can also use this pattern to just as easily create URLs to the admin page for your django models too. This post shows you how to make aget_admin_url()
model method that generates links to give you quick access to your admin.Using Django's request after updating POST or GET attributes
If you update
request.POST
orrequest.GET
in a view (or else where), any subsequent calls torequest.REQUEST
will still return values from the old, outdatedGET
andPOST
dictionaries.Reversing a unique Generic Foreign Key with Django
When using
GenericRelations
with Django to create unique generic foreign keys between objects, it can become tiresome having to navigate theRelatedManager
every time you need to retrieve the single instance of the one-to-one relationship. This post shows how creating a quick ‘Mixin‘ can help overcome this inconvenience.Filtering on annotations in Django
Django’s annotate method can be useful for counting particular attributes on every member of a queryset (i.e. count the number of books an author has). Unfortunately you can’t use the ORM to do any filtering on those attribute. This would be useful for only considering an attribute if it were above a certain value, or belonged to a certain object (i.e. count the number of books with the tag ‘Horror’). This post shows how to make use of the ‘extra‘ method Django provides to create filtered annotations
Middleware to ensure Facebook Auth on all views with Fandjango
Fandjango is a great application for getting a Facebook Canvas application up and running. It provides a nice view decorator to ensure a user is authorised with Facebook before allowing them access to that view. This post provides a piece of middleware that makes use of that decorator, allowing you to enforce Facebook authorisation on *all* views in your application.