LINUX.ORG.RU

mod_python: имена полей


0

0

Здравствуйте!

Подскажите, чем вызвано такое поведение сабжа, при котором в коде
вида:

==цитата==
from mod_python import apache
from mod_python import util
import smtplib

def handler(req):
    fields = util.FieldStorage(req, keep_blank_values = 1)
    mssg = "TEST " + fields["action"] + fields["inn1"]
    session = smtplib.SMTP("localhost")
    RECIPIENTS = ["xxx@xxx.ru"]
    SENDER = "xxx@xxx.ru"
    session.sendmail(SENDER, RECIPIENTS, mssg)
==цитата==

оказывается, что поля action и count определены и их значения
получаются нормально, а при попытке получить значение поля inn1 возникает ошибка (KeyError: 'inn1'). Переменные передаются
скрипту через POST запрос. Пока возникло предположение, что это
из-за того что поле inn1 содержит в себе цифру, т.к. прочие поля,
содержащие в имени цифру, также не возможно получить (тоже
KeyError), а поля, не содержащие цифры - получаются. Если это
так, то как решить эту проблему (переименовать поля нет
возможности).

Кроме того, если в строку mssg = "TEST " добавить, скажем,
двоеточие (mssg = "TEST:"), письмо приходит без текста вообще,
пустое. С чем это может быть связано?

P.S. Я не профессионал в питоне, начал смотреть на него
только сегодня.

--
WBR, Dennis Prochko
anonymous

1) а fields["inn"] есть? может быть его inn1 превратили в fields["inn"][1] или что-то такое.

2) Вероятно, если ты пишешь "TEST:" то твоя строка попадает в заголовок письма. Почему так - см. RFC на SMTP.

anonymous
()
Ответ на: комментарий от anonymous

Все, разобрался с полями. Оказывается разработчики клиентской части софта переменные нумеруют, начиная с нуля. Т.е. имя переменной было inn0, а я пытался считать ее как inn1.

> если ты пишешь "TEST:" то твоя строка попадает в заголовок письма

Точно, собака, попадает в заголовок. Перед текстом добавил перевод строки, теперь попадает в тело письма, куда нужно. СПАСИБО!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.