2012-02-26 3 views
0

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

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

%o format: a number is required, not str 

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

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) 

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

ответ

1

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

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

+0

Это действительно интересно. Я никогда этого не осознавал, но ты прав. По-видимому, законно иметь какое-то количество пробелов между ними. – jdi

+0

проблема - это что-то еще, я думаю, потому что, даже если я прокомментирую эту строку, помещая # перед ней, тогда она покажет ошибку в той же строке. – rtcoms

+0

Ну, это означает, что вы не используете код, который, как вы думаете, работает. Является ли Django кэшированием чего-то? Вам нужно сказать, что Django перезагрузит ваш код? –

0

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

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

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

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) 
+0

проблема - это что-то еще, я думаю, потому что даже если я прокомментирую эту строку, помещая # перед ней, тогда она покажет ошибку в той же строке. – rtcoms

+0

Тогда вы не разместили достаточно кода, потому что эта ошибка была поднята вашим примером и была исправлена ​​как моими, так и ответами @ Greg – jdi