В общем-то, уже все знают, я для галочки просто напишу. А то спросят: "А почему ты не написал?" — а я и не буду знать, что ответить :-)
В общем, Джанго теперь внутри себя обрабатывает строки в прямом юникодном представлении.
Это означает, что Джанго умеет работать с любыми кодировками СУБД и любыми кодировками веб-страниц, при этом в самой программе программисту думать про это вообще не надо — все универсально. Текущий код нуждается в некоторых переработках, которые, как всегда просто и дотошно, описаны в документации по портированию. Также еще есть документ, объясняющий отношения Джанго с юникодом в целом. Призываю всех, кто "в trunk'е", прошерстить свои приложения, не откладывая. Это изменение гораздо менее трудоемкое, чем приснопамятный magic removal.
Большую часть работы сделал великолепный Малколм Трединник (у которого 36 часов в сутках). Также большущее спасибо всем, кто тестировал, сообщал о багах и писал патчи. Один баг мы, помнится, отладили прямо вживую вместе с Малколмом в IM'е и нашедшим баг Fromme в форуме. Open source рулит!
Между тем, это изменение — одна из больших вех на пути к версии 1.0. Следующей такой вехой, если я не ошибаюсь, должна стать переработка админского интерфейса, которая построена на новой инфраструктуре форм (newforms) и задумана как гораздо более гибкая, чем та, что есть сейчас.
Комментарии: 24
Думаю, сначала выйдет релиз 0.97, а потом уже newforms-admin вольется в trunk
Хм... А я не помню, чтобы 0.97 вообще планировалась...
Люто жду нормальной возможности делать кастомизированные поля в админке.
100%, таких планов не было.
Вооооот. Теперь можно и подумать над тем чтобы поюзать эту вашу Джангу :)
Всё это конечно здорово (сегодня пол дня переводил свой прект на unicode, как ни странно, но заработал с пятого раза :)), но я всё таки больше жду NewformsAdmin
А так Django - рулит по любому :)
Кто-нибудь в курсе, когда планируется выпуск newforms-admin в trunk? Дико требуются многие возможности этой админки для нового проекта, и прямо сейчас.
В принципе, с переходом юникода в транк можно юзать нью-админ ветку, раньше ведь выбирать приходилось (либо жесткий merge делать :)), а теперь новая игрушка есть :)
Ну... Вообще-то newforms-admin ещё не синхронизирован с транком по поводу юникода. Хотя Малкольм и обещал это сделать в ближайшие несколько дней, но пока ещё ждём.
In the next Django release (0.97), we will move the current django.newforms to django.forms. This will be a backwards-incompatible change, and anybody who is still using the old version of django.forms at that time will need to change their import statements, as described in the previous bullet.
We will remove django.oldforms in the release after the next Django release — either 0.98 or 1.0, whichever comes first.
Сегодня Малколм влил юникодные изменения в бранч newforms-admin.
Отличный повод всем перейти к тестированию.
Всё ушёл тестировать.
Наконец-то как порядочный человек могу удалить
__str__
, а то задолбало по два класса писать.:( Зачем картинки перекодировать
settings.py:
DEFAULT_CHARSET = 'windows-1251'
Получаем ошибку!
...
File "/usr/local/lib/python2.4/site-packages/django/utils/encoding.py", line 63, in smart_str
return s.decode('utf-8', errors).encode(encoding, errors)
...
UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 0: unexpected code byte
А как было все замечательно...
Прошу прощения, можно исправить, если убрать строчку:
А это уже поправимо...
После перехода на Unicode стало на порядки тормозить сложение строк. Вероятно, к юникоду не применён патч, в своё время ускоривший сложение простых строк.
Исравилось прочтением "Efficient String Concatenation in Python" - http://www.skymind.com/~ocrow/python_string/
Увы, cStringIO использовать не получилось - юникод им не поддерживается.
Вывод: юникод это хорошо, но детские болезни пока есть. Ждём Python 3000 :)
Для любопытных - код:
Вот так быстро:
Да, так будет быстро. Правда, думаю вариант с StringIO оптимальнее (высокая скорость при минимуме использования памяти):
И смешно и грустно, zope3 уж лет 5 как юникодный, с момента рождения
Разве что действительно, по памяти будет лучше, т.к. он будет чаще проводить конкатенации.
Иван, если вкратце, то что там сделано: просто везде на входе в Джанго переводится в юникод?
Достойное дело. Да прибудет ваш ordinal всегда in range.
Inline полей пока еще нет в newforms?
Они уже приблизительно работают в newforms-admin бранче. Но в транке пока нет.