Skip to main content
 首页 » 编程设计

python之'str' 对象不支持项目分配之django 错误

2025年05月04日9Terrylee

我创建了一个 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> 

请您参考如下方法:

问题出在这里:

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

string 是不可变的,不像 dict。您还应该使用 Django Forms ,而不是自己全部完成。

Django 还内置了对发送电子邮件的支持。阅读 Sending E-mail documentation查看如何使用它。