Ошибка форматирования строки в Python - PullRequest
0 голосов
/ 26 февраля 2012

Это критическая по времени ошибка, иначе я бы не стал публиковать здесь, и это также моя самая первая попытка с django и python, поэтому рассмотрим соответственно.

Я получаю ошибку

%o format: a number is required, not str

в моем приложении Django. Место, где отображается ошибка: (я пытаюсь создать строку сообщения)

msg_donor = 'Dear %s,\nThank you for contributing to %s \'s fundraising campaign 
on Milaap.org. You\'ve made our day.\nRemember, since this is a loan, and not 
donation, 100% of your money will come back to you!\nYou will shortly receive 
your milaap login details. You can check who your money has gone to and track 
your repayments through your account. Be sure to sign up and check your account
regularly for updates.\n\n%s' % (d.name, c.fundraiser_name, regardsStr)

Я не написал% o в своем приложении, и мне интересно, как эта ошибка может быть получена ??

Ответы [ 2 ]

1 голос
/ 26 февраля 2012

В вашей строке 100% of your money. % является символом форматирования. Используйте 100%% of your money, чтобы вставить туда буквальное значение %.

(Я немного удивлен, что Python пропустил промежуток между % и o, но что угодно.)

0 голосов
/ 26 февраля 2012

Проблема вызвана ошибкой % в вашей строке по адресу: 100%

Когда вы выполняете форматирование строки, вы должны обязательно экранировать буквальный%, выполнив %%

Попробуйте это:

msg_donor = """Dear %s,\nThank you for contributing to %s's fundraising campaign 
on Milaap.org. You've made our day.\nRemember, since this is a loan, and not 
donation, 100%% of your money will come back to you!\nYou will shortly receive 
your milaap login details. You can check who your money has gone to and track 
your repayments through your account. Be sure to sign up and check your account
regularly for updates.\n\n%s""" % (d.name, c.fundraiser_name, regardsStr)
...