Feed Items
Automating Test Creation
Eric Holscher just posted a very nice article titled Automating tests in Django. The post goes through how to create integration tests for your Django applications in an automated way through the use of a Middleware that logs the test creation output to a file. It’s a creative approach and certainly very interesting. One additional benefit is that Eric created a screencast to go along with the post that is excellently done.
There is one thing about this approach to testing that doesn’t quite sit right with me and that’s that it seems like the testing process is backwards. If you’re creating tests based on what you have how are you possibly going to cover what’s specified but not implemented properly? It’s the same reason I’m not a fan of doctests. I think they encourage the wrong behavior, especially when often the output your matching to is so complex that the tendency is to just copy and paste from live results. I recognize that a lot of people don’t feel the same way, and perhaps I just need to give the idea more time to sink in.
I really appreciate all of the screencasts that are starting to show up within the Django community. I think it’s a vehicle that a lot of people enjoy and learn well from. I know that I’m certainly looking foward to more screencasts from Eric.
Replacing Django's ORM with SQLAlchemy
Will Larson just created a post titled Replacing Django’s ORM with SQLAlchemy that covers using SQLAlchemy with a Django project. It’s a great write-up, and generally what Django folks are referring to when they say, “of course you can use SQLAlchemy with Django.” I think Will does a good job of stepping you through the important bits.
One thing I appreciate is that the post hints at some of the negatives of doing something like this. You lose things like generic views, all contrib apps including the admin, most of the management commands, and some smaller pieces that are embedded in various parts of the framework. Tread this way cautiously.
Another item in the post that got my attention was when Will mentioned the following in reference to the possibility of doing a full drop in replacement for the Django ORM, essentially allowing you to use fully the Django bits alongside of the SQLAlchemy pieces:
This tutorial won’t build that Frankenstein, since it’s only interested in exploring the loose coupling aspect, but it wouldn’t be prohibitively difficult to do so. Although, it would be awkward in some regards.
Well I, and others, have been building “that Frankenstein” for some time now with a project we call Django-SQLAlchemy. There’s also a somewhat defunct project called Tranquil that is a hybrid between what Will demonstrates and what we’re trying to do with django-sqlalchemy.
I’m not sure whether or not these projects are “awkward” or “Frankensteins,” but I can assure you thus far they have been prohibitively difficult, as we see no full implementation for a drop-in replacement still today. Getting the initial stuff in place is pretty darn easy, but as you get into it there are lots of little edge cases that complicate things significantly.
I want to thank Will for the great post. I think he does a great job of talking about the strengths of SQLAlchemy, and hopefully people will be inclined to experiment with the idea of using SQLAlchemy in addition to, or instead of, Django’s ORM.
TWiD Community Evangelist
As we mentioned on This Week in Django 30 Kevin Fricovsky will be joining the podcast as a Community Evangelist. If you’re wondering what that’s all about and how Kevin fits into the show, check out his detailed post on the subject. Both Brian Rosner and I are extremely pleased to have Kevin’s help and support.
This Week in Django 30 - 2008-07-20

This Week in Django is a weekly podcast about all things Django.
This week we discuss the NewForms-Admin merge into Trunk, DjangoCon, a few source commits, some cool projects from the community, and the Tip of the Week.
Please see the Show Notes below for all the pertinent information and links
Downloads
AAC Enhanced Podcast (41.8 MB, 49:31, AAC)
MP3 Edition (34.1 MB, 49:31, MP3)
OGG Edition (27.9 MB, 49:31, Vorbis)
The Enhanced Podcast version contains screenshots and easy access links to all of the items we discuss throughout the podcast.
Feeds Available
iTunes Feeds are available. By subscribing using the iTunes feeds the podcasts will automatically be downloaded for you when we release them.
iTunes Feeds
This Week in Django – AAC Edition
This Week in Django – MP3 Edition
Regular RSS Feeds
This Week in Django – AAC Edition
This Week in Django – MP3 Edition
This Week in Django – OGG Edition
Give Us Feedback
Want to give us some feedback on the show? We’re always looking for ideas or suggestions that will help improve each episode. Please contact us at feedback __at__ thisweekindjango.com.
Show Notes
Big News (0:47)
- NewForms-Admin Branch Merges to Trunk – A huge step towards Version 1.0.
- Version 1.0 Sprint Schedule
- NewForms Admin Documentation
- Updated NewForms Documentation
- newforms-admin Migration and Screencast – Great way to get started and make the migration to NewForms-Admin.
- Pre-NFA Merge Tag
- DjangoCon Web Site and DjangoCon Schedule Released – It’s quite a lineup. We hope to see everyone there.
Tracking Trunk (15:04)
- Removed the mysql_old backend
(7949)– According to Malcolm Tredinnick, it smells bad and has no friends.
- newforms -> forms switch
(7971)** django.newforms is now django.forms. Updated your code.
- Performance Improvements for urlize and urlizetrunc filters
(7985)– This one has bit us on the Django Logger.
Community Catchup (26:16)
- Kevin Fricovsky – joins the This Week in Django team as Community Evangelist. Kevin will be working to produce the show, contacting guests, gathering news items, coming up with ideas. Kevin has been doing this work regularly anyway so it’s great of him to team up with us to help out the program:
- Monty Lounge Industries – Kevin’s web strategy, design, and development company.
- How I Work Daily – Kevin’s blog. You should have this one in your feedreader.
- PyWorks conference – to be held in Atlanta, GA on November 12-14, 2008.
- PyOhio – Reminder that this free one day conference is in Columbus, OH on July 26, 2008.
- Twitter Search – via Kevin Fricovsky using the new Twitter Search capability to track all tweets about django.
- Jinja2 Final aka Jinjavitus Released – Armin Ronacher and the rest of the Pocoo team announced the release of this wicked-fast Django inspired template engine.
- OSCON Python BoF – Tuesday, July 22nd 7pm – 10pm from Jax Bar and Restaurant. Via Jason Kirtland’s excellent blog discorporate.
Tip of the Week (38:32)
This tip comes to us via Ben Jao Ming in his post Django auto-translation of field values.
If you need to translate content in a field then gettext is not going to help you out. Since you can create your own custom fields it’s easy to wrap a CharField with the translation behavior:
from django.db import models
from django.utils.translation import gettext_lazy as _
class AutoTranslateField(models.CharField):
__metaclass__ = models.SubfieldBase
def to_python(self, value):
return str(_(value))
Just add whatever translations you know of to the locale file and run compilemessages.
Thank You! (42:45)
- 7 Habits For Effective Text Editing 2.0 – Awesome video by Bram Moolenaar
- Brian Rosner
Django 1.0-Alpha
In the ongoing march to Version 1.0, the Django project just tagged and bagged the 1.0 Alpha version with Changeset 8037. I encourage everyone to grab the tarball or svn up and start banging on the latest and greatest code.
NewForms-Admin Migration Screencast!
Brian Rosner just released a new screencast and blog post, newforms-admin Migration and Screencast, that walks you through how to get started with migrating to NewForms-Admin from your existing trunk based code. The screencast and accompanying blog post are very well done. It’s great to get this kind of helpful information, especially from someone that knows so much about the internals of the code.
I highly encourage everyone to check it out, especially if you’re on the fence on whether or not the conversion is worth it. Brian shows how easy it is to get started.
DjangoCon Schedule Available
Robert Lofthouse just announced that the DjangoCon schedule is available. There are a ton of exciting speakers and topics being presented. It’s going to be a great time and I’m looking forward to seeing everyone there. I am curious if people will be extending the conference into the following week and if sprints are being planned. I’d like to make the most of it.
NewForms-Admin Lands in Django Trunk
Brian Rosner just now, with Changeset 7967, merged the NewForms-Admin branch of Django into Trunk. This is a huge step forward in the push to version 1.0. I want to personally thank all of the numerous contributors that have made NewForms-Admin possible. It’s been an enormous amount of work, and I am so appreciative. Thanks!
NewForms-Admin Merge Live
Watch Brian Rosner merge Django NewForms-Admin live. This might be a first.
This Week in Django 29 - 2008-07-13

This Week in Django is a weekly podcast about all things Django.
This week we have a special guest, Kevin Fricovsky, that joins us as we talk about DjangoCon, EuroPython, a few source commits, some cool projects from the community, and the Tip of the Week.
Please see the Show Notes below for all the pertinent information and links
Downloads
AAC Enhanced Podcast (74.2 MB, 1:31:20, AAC)
MP3 Edition (62.8 MB, 1:31:20, MP3)
OGG Edition (51.5 MB, 1:31:20, Vorbis)
The Enhanced Podcast version contains screenshots and easy access links to all of the items we discuss throughout the podcast.
Feeds Available
iTunes Feeds are available. By subscribing using the iTunes feeds the podcasts will automatically be downloaded for you when we release them.
iTunes Feeds
This Week in Django – AAC Edition
This Week in Django – MP3 Edition
Regular RSS Feeds
This Week in Django – AAC Edition
This Week in Django – MP3 Edition
This Week in Django – OGG Edition
Give Us Feedback
Want to give us some feedback on the show? We’re always looking for ideas or suggestions that will help improve each episode. Please contact us at feedback __at__ thisweekindjango.com.
Show Notes
Big News (3:38)
- EuroPython 2008 has come and gone.
- DjangoCon – Jacob Kaplan-Moss let the cat out of the bag and let us know that a DjangoCon is being planned for the 1.0 release timeframe for September 6th and 7th. More details to follow. We’ll keep you posted.
- Official Announcement
- A Quote from Robert Lofthouse via Simon Willison’s blog.
“DjangoCon 2008. Venue: Googleplex, San Francisco Bay Area. Dates: 6th and 7th Sept. Official post will be on djangoproject.com soon.”
Tracking Trunk (14:27)
- Added a
ping_googlemanagement command to the sitemaps contrib(7813)– Makes it easy to ping Google once your Sitemap is up and running.
- Fixed #2070: refactored Django’s file upload capabilities.
(7814)- Django now handles large files nicely in uploads with the new streaming file upload handling.
- New uploading documentation
- There have been a ton of fixes since this landed.
- Multi-part MIME parsing fix
(7905) - Support pluggable backends for FileField
(5361)
- Moved make-messages, compile-messages and daily-cleanup into
django-admin.py(7844)– This makes them easily accessible as management commands and reduces the number of binaries and man pages.- django-command-extensions – This is a repository for collecting global custom management extensions.
- Jannis Leidel -
Branching and Merging (34:18)
- Added autodiscover functionality to django.contrib.admin.
(7872)- This makes the admin aware of per-app admin.py modules and does an import on them when explicitly called.
- Added some documentation about media defintions in ModelAdmin classes.
(7873)- Subtle backward incompatible change
- Learning NewForms-Admin
Community Catchup (47:27)
- How to build Django web apps – Looks to be a great workshop with one of Django’s superstars, Jeff Croft.
- django-treemenus – Very cool application by Julien Phalip that makes it easy to add tree menus to your Django app and manage the structure dynamically from the customized admin interface. View the 0.4 release post for more information.
- First Two Django Screencasts – Eric Florenzano never sleeps. His first foray into screencasts are quite impressive. He covers: 1. Setting up a Django Environment 2. Using Django-Pagination
- Interview with Jacob Kaplan-Moss – Great interview by Brazilian Marinho Brandão.
- Yahoo’s Build your Own Search Service in Django – Will Larson offers two informative articles on integrating BOSS with Django.
Tip of the Week (1:10:41)
Mike Axiak offers the following tip for getting started with contributing to Django source code.
1. Find a closed ticket that interests you. 2. Take a look at a closed ticket, but not the patch. 3. Check out the revision prior to the one that closed the ticket. 4. Write a patch for Django with your own implementation. 5. Compare your patch with the committed patch and try to learn from the differences.
Once you’re comfortable do it for real.
Thank You! (1:23:24)
- Django-Chunks – Simple keyed content that you can insert into your templates.
- Cloud27 – A social network built on Pinax.
- This Week in Django 24 – Interview with Pinax / Cloud27 founder James Tauber.
- Django-Hotclub Channel
- Kevin Fricovsky
- How I Work Daily
- Django-NYC – Discussion group for Django-NYC attendees. If you’re in the NY area, be sure to check it out.
- Brian Rosner
DjangoCon Officially Announced
There’s been lots of discussion and hints over the past several days about a forthcoming Django based conference called DjangoCon. The official announcement was just released. I’ve always been fond of small intimate group settings and this one will certainly be that with only 200 attendees allowed to participate. I only hope that I get one of the coveted spots.
Cloud27 - A Social Network
This morning I got my first glimpse of what will become Cloud27, featuring a sporty design by Greg Newman, and I already like what I see. Cloud27 is a new social network based on Pinax, a Django reference application for reusable applications.
So if there’s Pinax, why Cloud27? Well Pinax is where all development and new ideas happen. Pinax is project intended to provide a starting point for websites. Cloud27 will actually be focussed on building out on the base of Pinax and expanding it into a kick-ass social network application.
To find out a whole lot more about reusable applications and Pinax, I highly recommend a listen to This Week in Django 24, featuring Pinax / Cloud27 founder James Tauber.
I’ll be keeping an eye on Cloud27.
No TWiD This Week
Apologies to all but there will be no This Week in Django podcast this week. Enjoy the week off and we look forward to seeing you all next week on TWiD Live.
Callcast with Jacob Kaplan-Moss
Kevin Fricovsky at the HIWD (How I Work Daily) blog just posted a very interesting callcast with Jacob Kaplan-Moss, one of Django’s core developer. In the callcast, Jacob discusses a planned DjangoCon 2008 conference to be held in the San Francisco Bay area. The idea of a conference centered around Django sounds very exciting. I highly recommend that you give it a listen.
This Week in Django 28 - 2008-06-30

This Week in Django is a weekly podcast about all things Django.
This week we talk about quite a few source commits (kicking-ass), some cool projects from the community, the Tip of the Week, and a question from the IRC.
Let us know if downloads are better for those of you in Europe.
Please see the Show Notes below for all the pertinent information and links
Downloads
AAC Enhanced Podcast (50.3 MB, 1:01:06, AAC)
MP3 Edition (42 MB, 1:01:06, MP3)
OGG Edition (32.9 MB, 1:01:06, Vorbis)
The Enhanced Podcast version contains screenshots and easy access links to all of the items we discuss throughout the podcast.
Feeds Available
iTunes Feeds are available. By subscribing using the iTunes feeds the podcasts will automatically be downloaded for you when we release them.
iTunes Feeds
This Week in Django – AAC Edition
This Week in Django – MP3 Edition
Regular RSS Feeds
This Week in Django – AAC Edition
This Week in Django – MP3 Edition
This Week in Django – OGG Edition
Give Us Feedback
Want to give us some feedback on the show? We’re always looking for ideas or suggestions that will help improve each episode. Please contact us at feedback __at__ thisweekindjango.com.
Show Notes
Big News
Malcolm Tredinnick is back!!!
Tracking Trunk (1:08)
- QuerySet Refactor Cleanup – Several tickets related to QuerySet Refactor merge and unrelated but just database stuff in general:
- Corrected DateQuerySet to handle nullable fields
(7739)– Previously if the date field was nullable no results were returned. - Corrected values and values_list across nullable joins
(7740)– Previously, if we were querying across a nullable join and then a non-nullable one, the second join would not be a LEFT OUTER join, which would exclude certain valid results from the result set. (7741),(7773), and(7760)through(7766)– Lots of miscellaneous QuerySet changes- Delete multi-table objects correctly.
(7784)– When model inheritance is used, the parent objects should be deleted as part of thedelete()call on the child. - Changed the way extra() bits are handled when QuerySets? are merged.
(7791)
- Corrected DateQuerySet to handle nullable fields
Community Catchup (19:28)
- Django newforms-admin upgrade – Luke Plant discusses his experiences with upgrading to the Django NewForms-Admin branch. Great post if you’re considering making the jump.
- Kss in Django – KSS is a javascript framework that aims to allow Ajax development without javascript. It uses stylesheets with CSS-compliant syntax to setup behaviours in the client and a set of well-defined commands that are marshalled back from the server to manipulate the DOM.
- Oh Django Song – Creative Mac OS X snippet.
- Python and Django Setup for Mac OS X Leopard – Exhaustive walkthrough by David A Krauth on setting up Django on Mac OS X.
- Edit Inline Support for Generic Relations – Patrick Altman delivers an article discussing how he implemented edit-inline support for generic relations.
- Django code_swarm – A kick ass-swarm visualizer by Brian Rosner for the Django source code from initial release to today.
code_swarm– An experiment in organic software visualization.- SQLAlchemy Code Swarm
- The basics of creating a tumblelog with Django – Interesting post by Ryan Berg. Similar projects are Jelly-Roll and SyncR and Django Lifestream.
- An Interview with Adrian Holovaty – Creator of Django – Another excellent interview by Shabda Raaj.
Tip of the Week (43:49)
Ever need to reorder the fields on your Model Form?
class TranslationForm(BookForm):
translator = forms.CharField(max_length=40)
def __init__(self, *args, **kwargs):
super(TranslationForm, self).__init__(*args, **kwargs)
self.fields.keyOrder = ['title', 'author', 'translator', 'publisher', 'copyright']
IRC Ad Nauseam (47:10)
Backwards Incompatible Changes Information
Charlie O’Keefe say, “I’ve gotten into designing restful URL schemes, basically organizing a web app around resources. Learning Django I was frustrated to find that nothing seems to be done this way. Is there any tool that can help with that?”
- django-rest-interface – Google Summer of Code project by Andreas Stuhlmüller.
Thank You! (50:58)
- MacVim
- Using TextMate with Django – Great TextMate bundle by Paul Bissex.
- E Text Editor – Cool TextMate clone for Windows. Utilizes TextMate bundles.
- BosnoWsgi – Brian Rosner’s Tool for managing WSGI processes
- Monit – Great Unix System management
- CherryPy – a pythonic, object-oriented HTTP framework.
- Hosting a Django Site with Pure Python – Great post by Eric Florenzano.
- Bill Gates Retires
- Bill Gates Unhinged – amazing email from Bill Gates about his frustrations with using Microsoft software.
- TWiT Podcast
- Story by Todd Bishop
- Brian Rosner
Words Matter
You have to word your invitations carefully. Depending on which way this goes, I might just cozy up to a nice glass of wine.
Django Code Swarm Visualization
In the closing remarks of This Week in Django 26 Brian Rosner pointed out a code swarm visualization created for Python as well as a couple of other open source projects. Well, in typical Brian fashion, he couldn’t leave well enough alone, so he created a wicked cool Django Code-Swarm Visualization. Definitely check this out. Thanks Brian.
This Week in Django 27 - 2008-06-22

This Week in Django is a weekly podcast about all things Django.
This week we talk about the Django Software Foundation, some source commits, some cool projects from the community, a Tip of the Week. and a couple IRC items. It’s a packed show.
Please see the Show Notes below for all the pertinent information and links
Downloads
AAC Enhanced Podcast (55.8 MB, 1:08:08, AAC)
MP3 Edition (46.8 MB, 1:08:08, MP3)
OGG Edition (38.5 MB, 1:08:08, Vorbis)
The Enhanced Podcast version contains screenshots and easy access links to all of the items we discuss throughout the podcast.
Feeds Available
iTunes Feeds are available. By subscribing using the iTunes feeds the podcasts will automatically be downloaded for you when we release them.
iTunes Feeds
This Week in Django – AAC Edition
This Week in Django – MP3 Edition
Regular RSS Feeds
This Week in Django – AAC Edition
This Week in Django – MP3 Edition
This Week in Django – OGG Edition
Give Us Feedback
Want to give us some feedback on the show? We’re always looking for ideas or suggestions that will help improve each episode. Please contact us at feedback __at__ thisweekindjango.com.
Show Notes
SPONSOR: This Week in Django is brought you by Justin Lilly, who according to all historic accounts, once scissor kicked Angela Landsbury. Thank you Justin.
Big News (2:18)
New foundation for Django – Lawrence-Journal World announces new Django foundation and code commits change license ownership.- Jacob Kaplan-Moss Signing Papers – History in the making.
Tracking Trunk (5:02)
- login view no longer assumes that set_test_cookie has been called.
(7692)- This is mildly backwards-incompatible, but in the “now it works the way it should have all along” sense.
Branching and Merging (9:50)
Community Catchup (15:57)
- DebugFooter Redux – Last week we talked about Andreas Marr very cool Django Snippet to add debug information into the footer of each webpage. This week he did it one better based on some suggestions from our program. Now that’s what I call Podcast Driven Development™.
- Django Tutorial – Abstract Base Classes vs Model Table Inheritance – Awesome post by Kevin Fricovsky that covers the difference between Abstract Base Classes and Multi-Table Inheritance.
- django_templatecomponents – A django application by Filip Noetzel that makes it easy organize your component source (javascript, css) right in your django templates to to make your website much faster.
group_requiredDecorator – Matt Dennebaum offers a nice addition to your Django projects that adds the ability to check for authorization of a user against the specified group.
- django-ajax-validation – A reusable application by Alex Gaynor for doing ajax validation with django newforms. It requires jQuery.
- Git repository also available
- Ticket 2070 – Streaming file uploading by Mike Axiak.
- Fun with queryset-refactor – Another great post by James Bennett discussing some of the new features that were part of the Queryset-Refactor merge.
- Practical Django Projects – Forthcoming book by James Bennett.
- Werkzeug Debugger in Django – The Werkzeug debugger has a kick ass AJAX based console option to debug traceback items in the web browser.
- Changeset 7537
- Ticket 3527 – Adds Werkzeug to Django directly.
- Let’s talk about documentation – Excellent post by James Bennett on how he approaches documentation for his Django projects.
Tip of the Week (43:22)
This tip comes from Alexander Solovyov in his blog post Render To Improved.
Sometimes you want to return a RequestContext from a view. One way to do that is to specify the response code using a decorator.
@render_to('mytemplate.html')
def myview(request):
return ({'id': 1, 'name':'empty'})
# example with override
@render_to('mytemplate.html')
def myview(request):
return ({'name':'empty'}, 'override.html')
# python 2.3 example with override
def myview(request):
return ({'name':'empty'}, 'override.html')
myview = render_to(myview, 'mytemplate.html')
You can also return a tuple where the second item is a string that overrides the default template specified in render_to.
- Permalink Decorator – “A backwards remapper hulu-hooping dancer, thingy.”—brosner
IRC Ad Nauseam (51:11)
Backwards Incompatible Changes Information
What’s the difference between Abstract Base Classes and Multi-Table Inheritance?
Abstract Base Classes are where you provide a base class, like Person, and then a derived class like Employee. Django will create a single database table for the Person model that contains the combined fields from both the base and derived classes.
Multi-Table Inheritance also has the base and derived class but at the database level you end up with two tables: one for the base class and one for the derived class, with a one-to-one field added in to connect the two.
Again, we highly recommend the excellent post by Kevin Fricovsky that we mentioned in Community Catchup. Plus, as always, the excellent Django documentation.
- Abstract Base Classes – Django documentation on the subject.
- Multi-Table Inheritance – Django documentation on the subject.
Is there a way to pass the filter arguments as string to the QuerySet?
QuerySet parameters are standard Python keyword arguments, and can use standard keyword argument expansion.
Post.objects.filter(datetime__year=2008)
Post.objects.filter(**{'datetime__year': 2008})
- Dynamic Functions – Excellent post by Marty Alchin that discusses keyword arguments in a very easy to understand way.
Thank You!
- Facestat scales fast for Yahoo traffic
- Scaling Fast by Lukas Biewald
- Eric Florenzano in Japan – Follow him in his travels. Lots of very cool pictures.
- Brian Rosner
Hacking Pythons
Someone is very creative. I love it!
“What the hell is going on? This is fucking incredible.” Jacob Kaplan-Moss said. Kaplan-Moss is the chief architect of Django and said nothing like this had ever happened before. “They’re all naked, and these chicks don’t shave anything!”
Werkzeug Debugger in Django
A new feature to come to the Django-Command-Extensions project is the implementation of a new management command called runserver_plus. For now the “plus” part means that I’ve replaced the standard Django traceback pages with the Werkzeug Debugger traceback page in it’s place.
Getting Started
This item requires that you have the Werkzeug WSGI utilities installed, in addition to the django-command-extensions app.
To get started we just use the `runserver_plus` command instead of the normal `runserver` command:
$ python manage.py runserver_plus
* Running on http://127.0.0.1:8000/
* Restarting with reloader...
Validating models...
0 errors found
Django version 0.97-newforms-admin-SVN-unknown, using settings 'screencasts.settings'
Development server is running at http://127.0.0.1:8000/
Using the Werkzeug debugger (http://werkzeug.pocoo.org/)
Quit the server with CONTROL-C.
Note: all normal runserver options apply. In other words, if you need to change the port number or the host information, you can do so like you would normally.
Using
Whenever we hit an exception in our code, instead of the normal Django traceback page appearing, we see the Werkzeug traceback page instead.

Along with the typical traceback information we have a couple of options. These options appear when you hover over a particular traceback line. Notice that two buttons appear to the right:

The options are:
View Source
This displays the source below the traceback:

Being able to view the source file is handy because you are able to get more context information around where the error occurred. The actual traceback areas are highlighted so they are easy to spot.
One awkward piece about this is that the page is not scrolled to the bottom. At first I thought nothing was happening because of this.
Interactive Debugging Console
When you click on this button a new pane will open up below the traceback line you’re on. This is the money shot:

An ajax based console appears in the pane and you can begin debugging away. Notice in the screenshot above I did a print environ to see what was in the environment parameter coming into the function.
Summary
I’ve only been using the Werkzeug debugger on my Django projects for a day now. But I’m loving it. I encourage you to check it out. Plus if you’re not a current Django-Command-Extensions user, you’re going to find tons of really cool additions in there.
WARNING: This should never be used in any kind of production environment. Not even for a quick check into a problem. I cannot emphasize this enough. The interactive debugger allows you to evaluate python code right against the server. You’ve been warned.
