... на своих джанговских проектах, пожалуйста! Он практически готов к внедрению в основной код, нужно только потестировать его на реальных вещах, где есть не только английский язык. Собственно, он практически безглючный, например сейчас softwaremaniacs.org работает именно на нем (вчера переключил).
Призываю всех, потому что юникод в Django во-первых штука довольно важная, а во-вторых от пользователя требует очень простых действий.
Смысл всей идеи в том, что теперь внутри проекта на Django везде нужно работать с юникодом, а не с простыми строками. Это позволяет не думать о кодировках вообще. Превращение же юникода в кодировку БД и веб-страниц (туда и обратно) Django делает автоматом.
От пользователя по большей части требуется сделать одну вещь: в моделях заменить __str__
на __unicode__
. Иногда просто заменить, иногда внутри чуть-чуть переделать:
Было | Стало |
---|---|
Если просто выводится атрибут | |
|
|
Если делается строковое форматирование: | |
|
|
Если вызывается отображение родительского объект | |
|
|
Более подробно написано в wiki: http://code.djangoproject.com/wiki/UnicodeBranch#PortingApplicationsTheQuickChecklist
Само же переключение делается так:
svn switch http://code.djangoproject.com/svn/django/branches/unicode/
Есть надежда, что бранч включат в основной код уже на следующей неделе.
Комментарии: 14
Ну вот, теперь мы имеем ещё один
__метод__
который непонятно когда вызывается, а когда нет.2 wiz
вообще-то это старый непонятный метод на новый меняется. никакой революции
2 иван
попробую сегодня вечером переключить свой проект
Неужели это свершилось?! Наконец-то!
Нынешний бардак давно пора было прекращать. Я пробовал использовать юникод ещё с середины прошлого года, так постоянно что-нибудь приключалось - то фильтр не работает как надо, то админка оказывается выполнять какую-нибудь простейшую операцию, то шаблон не собирался, то ORM с ума сходил... Благо, быстро фиксили, обычно svn up сразу решал проблему, а за последние два месяца я вообще уже ни на что не нарывался, но то, что проблему признали, и собираются решать - это очень, очень радует!
Ещё раз огромное спасибо, за освещение таких важных событий!
Почему непонятно? Это стандартный питоновский метод, полностью аналогичный
__str__
, только вызывается тогда, когда надо привести объект к юникодной строке, а не к байтовой.По-хорошему,
__str__
вообще должен умереть, чем быстрее, тем лучше :-).Ещё бы u'..' умирло — вообще было бы здорово. Не знаете, это вообще планируется?
Планируется в Питон 3.0. Там будет все правильно: все строки — юникод, а "много байтов подряд" — отдельный тип bytes.
Да, отлично работает.
Что-то SlugField сломался, не наполняется сам даже если писать чистые ascii
Ой, простите, мой страшный косяк :)
Упал вывод ошибок в форме при form.as_p (остальной вывод форм в порядке), вылечилось сие в убийством force_uncode django/newforms/forms.py:126. Баг или фича?
Мнэ-э-э... А вариант того, что этот баг не в Django, не рассматривается? :-)
Если серьезно, то понять что-то по "упал вывод ошибок" нельзя, напишите в мой джаноговский форум (http://softwaremaniacs.org/forum/viewforum.php?id=5) traceback, который выдается, поглядим, что там не так.
Вроде все работает
Свершилось! Юникодный бранч теперь в основной ветке:
С чем всех и поздравляю!