I just upgraded my website to the development version of django. It has a bunch of new little features I’d like to use; and the next time I change the database I want to try django-evolution, which doesn’t work on 0.96.
It was easier than I had feared. For the website itself, I didn’t run into anything unexpected, just these, all documented:
- In all the models I changed __str__ to __unicode__; that was a simple substitution.
- Also in all the models’ fields maxlength went to max_length.
- I had to add a call to smart_string to my csv view.
- I’ve found one place I that needed protection from html escaping. The problem was a string containing in a python file; I wrapped it with mark_safe there, rather than adding a more general but less safe fix to the tag that eventually uses it.
I have a couple of utility scripts that were more of a problem. One needed to be rewritten because of the massive changes to django’s core.management module; the new version is a bit cleaner than the old, so that pleases me. The other is a problem with json serialization, which (at least as I’m (mis?)using it) now seems to have trouble with non-ascii unicode strings. But that I don’t really need (and if I did, xml seems to work fine), so figuring it out isn’t a high priority.
The big change here was obviously unicode. I see the advantage of that in the abstract, but I do have to wonder if it is really a win in my particular case. I have non-ascii (and non-latin1) data, but utf8-encoded strings worked just fine for me. Probably though that’s a reflection of the triviality of the text-processing I do…
UPDATE: Just found another gotcha: urllib.quote doesn’t like non-ascii unicode. Fixed with smart_str.
UPDATE 2: I should RTFM; the correct fix for the first update is to use django’s own url functions. Also, I forgot to mention one thing I had to do originally: fix a typo in a template! 0.96 let this get by:
{% extends "foo.html" }
Tags: django, Programming
December 29, 2007 at 9:11 am |
[...] Michael Lauer’s Weblog « Upgrading django [...]