Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 13, 2008 14:03:41

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

EmailMultiAlternatives принципиальное отличие

В чем принципиальное отличие? когда я используя функцию 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")
чтобы передать правильный код символа типа &#4059;

Вот собственно и все что я и хотел сказать и спросить в этом посте

Спасибо

Офлайн

#2 Ноя. 13, 2008 15:04:09

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

EmailMultiAlternatives принципиальное отличие

romankrv
Я единственное могу предположить что в первом варианте при сохранении в базу срабатывает какой то внутренний механизм конвертации. Если это так то хотелось взглянуть ему прямо в глаза.
Это уникод. Все строки джанги в нем.
romankrv
А во втором случаии я должен вручную обрабатывать и выдавать коды нтмл символов что то типа
Я тебе писал, что надо уникодную строку превратить в байтовую с нужной кодировкой. Для этого есть smart_str в django.utils.encoding



Офлайн

#3 Ноя. 13, 2008 18:17:15

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

EmailMultiAlternatives принципиальное отличие

Daevaorn
Для этого есть smart_str в django.utils.encoding
Я только не пойму для чего приводить с помощью 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>'
то есть как дальше это использовать?
я понял что эта функция предназначена для html-вывода и используется как обертка для encode('utf8')
#?encoding

и с какой целью разложено число на две состовляющие то есть первая часть это как я понял базис диапазона алфавита? d0
и почему не годиться код который делает коды букв итп как строку и передовать ее уже в функцию attach_alternative(tmp, “text/html”) где tmp = _&#XXXX;
tmp = '&#'+str(ord(u'\u0430'))+';' 
msg.attach_alternative(tmp, "text/html")
спасибо

Отредактировано (Ноя. 13, 2008 19:09:29)

Офлайн

#4 Ноя. 14, 2008 00:57:38

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

EmailMultiAlternatives принципиальное отличие

romankrv
то есть как дальше это использовать?
отправлять
romankrv
я понял что эта функция предназначена для html-вывода
это функция для умного преобразования уникодной строки в байтовую.
romankrv
и с какой целью разложено число на две состовляющие то есть первая часть это как я понял базис диапазона алфавита? d0
это кодировка utf8

Ром, почитай про уникод вобще и про его исользование в питоне в частности.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version