Привет,
решил попробовать написать программку для гуглева app engine. Сначала начал с django темплейтным движком. Все нормально. Текст по русски ввожу, все сохраняется в базе и потом django рендерит текст и не жужжит. А потом решил перелезть на mako, так как оно удобнее для меня, да и привык я. Проблема с mako одна, не хотит показывать нормально текста на русском. Проблема возникает, как я понял, с классами в которых свой кастомный __str__() метод реализован.
Если просто напишу в темплейте ${ctx.user} где user просто строка в unicode. То получаю ошибку, что кодек ascii не может сконвертировать символ с кодом более 0127. Я добавил свой фильтр, который применяется ко всем текстам автоматом
def enc(input): return input.encode( "utf-8" )
С простыми текстами все заработало. Русский текст показывает отлично. Но вот если ctx.user это класс, то мой фильтр обламывается конечно, потому как метода encode у него нету. Пробовал так
def enc(input): return str(input).encode( "utf-8" )
получаю опять же ошибку про ascii кодек
Если же в темплейте напишу ${str(ctx.user)} то все срабатывает. Но это же геммор везде заворачивать переменные в str().
Читал доку mako. что касается unicode, но так ничего не понял. Может мне объясните, как бороться с unicode в питоне/mako? Почему в django таких проблем нету?
Спасибо