At Imaginary Landscape, we often have the need to add remote file storage capabilities for our clients. At first glance, this sounds easy enough: "pip install django-storages", add the right credentials, and boom, you're done! However, this was not the case for one particular situation we encountered. We didn't want...
Articles by Imaginary Staff
Django Class-Based Views: The Basics
Class-based views are my favorite feature of Django, so there is an obvious bias when discussing function views and class-based views. I’ll throw my two cents in here and move on. I prefer the structure and predictability that class-based views provide. I recognize that there are many instances when a...
Quick Introduction to Mock
Quick Introduction to Mock Mock is a powerful library for facilitating testing. It allows users to replace components of your application with powerful mock objects at testing runtime. These objects can then be used to make observations about call patterns and to assert which methods of the object were accessed, the...
Debug Toolbar Primer
The Django Debug Toolbar is a powerful and useful tool for identifying potential trouble spots in your Django application. Hopefully, this post will serve as a starting point for understanding the information presented by the toolbar. Also, we will cover a couple of plugins for the toolbar, cache panel, and...
Twelve-Factor Renaissance
It has been a week since our production team returned from the 2013 DjangoCon US. Though technically we didn't return since it was in Chicago where we are located! Nevertheless, it was, wholeheartedly, an uplifting and enlightening experience. Russell Keith-Magee's keynote really demonstrated just how far the Django Project and its...
Simple Job Queues with django_rq
The de facto solution for job queues with background workers is Celery and RabbitMQ, but it is not the right fit for every project. RQ is an alternative to Celery, and while not as featureful, does provide a lightweight solution that makes it easy to set up and use. RQ...
Django Internationalization
A few weeks ago I gave a talk at the Chicago Djangonauts meeting on Django Internationalization. Apparently this isn't a task that a lot of people need to do frequently, as the crowd was not too familiar with the content of the talk. Luckily, internationalization isn't too complicated a concept and...
Rackspace Temporary URLs with django-cumulus
We love Rackspace at Imaginary Landscape. Recently, we needed to store a number of large files securely, and for logistical reasons, we chose to store them via Rackspace’s Cloud Files. Rackspace provides the ability to create temporary URLs for files stored via their service. This allows temporary access to privately...
Testing and Django
At the last Chicago Djangonauts meeting, which we host in our office, I gave my first Python/Django talk. I spoke regarding unit-testing your code in general, but, also how unit-testing works within the context of web-applications. The talk went smoothly and it seemed to be well recieved. Python's standard library...
Managing multiple SSH identities
Here at Imaginary we maintain our own git repositories internally with the help of the invaluable utility, Gitolite. This works well for us. However, in some cases, our clients have their own repositories that we must interact with. The problem arises when the client repositories reside on a third-party service, usually Github. As you likely know,...
Sewing Success with Fabric
I wanted to share a quick practical example of how Fabric, can make your development life easier. If you're unfamiliar with Fabric I recommend checking out its tutorial which describes Fabric thusly; Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment...
Django Form Snippets
Django forms are very convenient tools for Django development, but sometimes I find myself wrangling with them to get them to do what I want them to do. I’ve compiled a few simple form examples that I find useful for various form-related tasks. Say you have a model that looks...
Top 5 Favorite Django Modules
Of all the Django modules that are out there, several stand out as ones that I keep coming back to. These are some of my favorites: Django Debug Toolbar Django Debug Toolbar is an extremely useful Django application for debugging a site from “Django’s perspective.” It should only be used...
Our Django Server Setup: How and Why
One of the most important decisions you make in the process of building a new Django application is what software stack you use to serve it to the world. You're not lacking for options: people run Django on Apache, lighty, nginx, and Cherokee. You also need to decide how to...
Magic Links
The first time I used the new link attachment tool found on sites like Facebook, I thought I had experienced something magical. After pasting an external webpage URL into my wall-post form, an image, page title, and page description of the linked webpage appeared beneath my post as though out...
Django Settings in the Database
There's been a healthy amount of discussion about how applications should handle settings. As the creator of Mingus pointed out, it's a weird situation. You want anyone to be able to use your application with as little fuss as possible, but at the same time you just need to have...
Django Multiple Page Forms
I recently started working on another new project here at Imaginary Landscape, and this one looked rather enticing as it threw some stuff my way that I haven't had a chance to play with much recently. First on that chopping block was a multi-page registration form application. Immediately I remembered...
Permission Based File Serving
One issue I've run into a couple times while working with Django is the need to serve files to users based on permissions. The first situation occurred with a store we were building that would allow for electronic versions of books to be sold. These books would typically be distributed...
Tangled Webs of Django Applications
At Imaginary Landscape, we definitely enjoy leveraging the many open source applications that exist out in the wild. We also create some of our own open source applications, along with a few closed source applications that are either too customized for one particular customer, or for a number of other...
Django Template Tags
It seems like I frequently find myself needing to write template tags for the various projects I work on here at Imaginary Landscape. The most common reason is generally so that I can adhere to the ideas of the DRY principle. For instance, YaBa has the potential to craft a...
Django and Continuous Integration
There are a wide variety of reasons why we should worry about testing in our Django applications, obviously. However, as a former system administrator, I have some ideals that are absolutely engraved straight into my brain I think. The main idiom being: "Never do the same thing three times. Do...