Форум сайта python.su
В чем принципиальное отличие? когда я используя функцию render_to_string то (особенно когда идут символы код ascii >127)
первый вариант:
полученное значение предварительно записываю в базу затем делаю выборку этого поля и отсылаю содержимое этого поля на почтовый ящик с помощи функции EmailMultiAlternatives.
второй вариант:
когда я не использую базу данных и напрямую посылаю это значенние при помощи функции EmailMultiAlternatives как альтернативным текстом.
То есть без предварительной обработки во втором случаи отсылается как альтернативным текстом примерно такое
In : render_to_string('letter_placeholder.html'),
Out: (u'\u0412\u0430\u043c <b>\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438e \u043e\u0442</b> <i> </i>',)
и письмо естественно содержит эти кода (\u0441) а не читабельные буквы
Я единственное могу предположить что в первом варианте при сохранении в базу срабатывает какой то внутренний механизм конвертации. Если это так то хотелось взглянуть ему прямо в глаза. :)
А во втором случаии я должен вручную обрабатывать и выдавать коды нтмл символов что то типа
tmp = '&#'+str(ord(u'\u0430'))+';'
msg.attach_alternative(tmp, "text/html")
Офлайн
romankrvЭто уникод. Все строки джанги в нем.
Я единственное могу предположить что в первом варианте при сохранении в базу срабатывает какой то внутренний механизм конвертации. Если это так то хотелось взглянуть ему прямо в глаза.
romankrvЯ тебе писал, что надо уникодную строку превратить в байтовую с нужной кодировкой. Для этого есть smart_str в django.utils.encoding
А во втором случаии я должен вручную обрабатывать и выдавать коды нтмл символов что то типа
Офлайн
DaevaornЯ только не пойму для чего приводить с помощью django.utils.encoding юникод строку в строку как эта:
Для этого есть smart_str в django.utils.encoding
'\xd0\x92\xd0\xb0\xd0\xbc <b>\xd1\x81\xd0\xbe\xd0\xbe\xd0\xb1\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8e \xd0\xbe\xd1\x82</b> <i> </i>'
tmp = '&#'+str(ord(u'\u0430'))+';'
msg.attach_alternative(tmp, "text/html")
Отредактировано (Ноя. 13, 2008 19:09:29)
Офлайн
romankrvотправлять
то есть как дальше это использовать?
romankrvэто функция для умного преобразования уникодной строки в байтовую.
я понял что эта функция предназначена для html-вывода
romankrvэто кодировка utf8
и с какой целью разложено число на две состовляющие то есть первая часть это как я понял базис диапазона алфавита? d0
Офлайн