Zażółć Gęślą Jaźń w Django
Wszyscy developerzy Django, których kiedykolwiek zainteresował/zaskoczył unikodowy galimatias w Pythonie zapewne wiedzą, że modele i poszczególne pola typu CharField, TextField itd. zwracają swoje wartości w unicode. W związku z tym kod typu
"Mój wspaniały artykuł - %s"%model.title
nie zadziała z powodu niezgodności formatów łączonych łańcuchów (unicode i nieunicode). Mogłoby się wydawać, że wystarczy dopisać # -*- coding: UTF-8 -*- na początku pliku z owym kodem oraz dodać magiczną literkę u przed stringiem:
u"Mój wspaniały artykuł - %s"%model.title
jednak i tu napotkamy lipę - problemy z kodowaniem. Rozwiązaniem jest dosyć rozwlekła jak na pythona linijka:
unicode("Mój wspaniały artykuł - %s", "utf-8")%model.title
Dodatkowo, jeżeli umieszczamy ten kod np w funkcji __str__ jakiegoś obiektu, całość należy ująć w nawias i doklepać na końcu .encode('utf-8')
Pytanie moje brzmi - czy można szybciej? ...