__unicode__

Zu Beginn meines Ausflugs in die Welt von Django habe ich mit dem Django-Paket der aktuellen Ubuntu Hardy Distribution gearbeitet. Dieses liefert Django in der Version 0.96, gegenüber der die aktuelle SVN-Version einige Vorteile hat. Unter Anderem verwendet die aktuelle SVN-Version __unicode__() statt __str__() für String-Repräsentation von Objekten.

Bei meinem Umstieg habe ich also meine ganzen alten __str__() Funktionen in __unicode__() umbenannt und unverändert weiterverwendet. Das ging auch gut, bis eines Tages die String-Repräsentation eines Objekts ein Sonderzeichen enthielt. An dieser Stelle warf Django mit Fehlern um sich.

Glücklicherweise hatte zur selben Zeit ein anderer Einsteiger im IRC-Chat #django auf irc.freenode.net das gleiche Problem und so erfuhr ich, dass __unicode__() (wie eigendlich der Name schon sagt) Unicode-Objekte und keine String-Objekte zurückgeben muss.

Das macht bei herkömmlichen Strings keinen Unterschied, wohl aber bei Strings, die Sonderzeichen enthalten.

Tags: Django