объект 'str' не поддерживает назначение элементов - ошибка с django - PullRequest
1 голос
/ 31 марта 2011

Я создал приложение Django. В приложении есть страница регистрации пользователя. Страница регистрации реализована, и я пытался реализовать подтверждение по электронной почте после регистрации. т.е. отправка электронного письма, когда пользователь зарегистрирован. при этом я попал в эту ошибку, «объект« str »не поддерживает назначение элемента». Может кто-нибудь помочь мне решить это. вставит мой код сюда.

def registrationForm(request):
    if request.method == "POST":  
        firstName = request.POST.get("firstName")
        lastName = request.POST.get("lastName")
        email = request.POST.get("email")
        password = request.POST.get("password")
        sex = request.POST.get("sex")
        birthday = request.POST.get("birthday")
        print request.POST.get("sex")
        UniversityDetails(firstName=firstName,lastName=lastName,email=email,password=password,sex=sex,birthday=birthday).save()

        msg = "Registration Successfull"
        msg['Subject'] = 'The contents of %s' 
        msg['From'] = me
        msg['To'] =you 
        s = smtplib.SMTP()
        s.sendmail(me, [you], msg.as_string())
        s.quit()

        return render_to_response('registrationForm.html')

    return render_to_response("registrationForm.html")

HTML

<form name ="myform"  method="POST" id='FormID'>

<table>
<tr>
<td>First name</td>
<td>
<input type="text" name="firstName" value=""  maxlength="100" />
<b id="firstNameID" style="font-family:Times New Roman;color:#B4045F;font-size:14px;">
</td>
</tr>

<tr>
<td>Last name</td>
<td>
<input type="text" name="lastName" value="" maxlength="100" />
</td>
</tr>

<tr>
<td>E-mail</td>
<td>
<input type="text" name="email" value="" maxlength="100" />
</td>
</tr>

<tr>
<td>Password</td>
<td>
<input type="password" name="password" value="" maxlength="100"  />
<b id="passwordID" style="font-family:Times New Roman;color:#B4045F;font-size:14px;">
</td>
</tr>

<tr>
<td>Gender:</td>
<td>
<input type="radio" name="sex" value="male" /> Male
<input type="radio" name="sex" value="female" /> Female
</td>
</tr>

<tr>
<td>Birthday</td>
<td>
<input type="text" name="birthday" id='datepicker' value="" maxlength="100" />
</td>
</tr>


</tr>
</table>


<script type="text/javascript">
function isEmpty(){
    if  ((document.myform.firstName.value.length==0)) 
        {
        document.getElementById('firstNameID').innerHTML = 'Please fill this field';
        return true;
        }
    else if ((document.myform.password.value.length==0)) 
        {
        document.getElementById('passwordID').innerHTML = 'Please fill this field';
        return true;
        }
    else if (! ValidCaptcha())
        {txtCaptcha
            alert("Captcha entered wrong");
        }

    else 
        { 
        document.getElementById('FormID').action = "http://10.1.0.90:8080/registrationForm/";
        document.getElementById('FormID').submit();
        return false; 
        }
}
</script>

1 Ответ

8 голосов
/ 31 марта 2011

Проблема здесь:

msg = "Registration Successfull"
msg['Subject'] = 'The contents of %s'

string s являются неизменными и не dict -подобны.Вам также следует использовать Django Forms , а не делать все самостоятельно.

Django также имеет встроенную поддержку для отправки электронных писем.Прочитайте документацию Отправка электронной почты , чтобы узнать, как ее использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...