如图,点击修改昵称或者绑定邮箱或者修改密码,可以进行相应的操作:首先点击这些按钮,会弹出一个表单,在user/forms中新建一个表单。py:CharngeNicknameFomr类类ChangeNicknameForm(forms.Form):nickname_new=forms.CharField(label='newnickname',max_length=20,widget=forms.TextInput(attrs={'class':'form-control','placeholder':'Pleaseenteranewnickname'}))def__init__(self,*args,**kwargs):if'user'inkwargs:self.user=kwargs.pop('user')super(ChangeNicknameForm,self)。')返回self.cleaned_datadefclean_nickname_new(self):nickname_new=self.cleaned_data.get('nickname_new','').strip()ifnickname_new=='':raiseforms.ValidationError("新昵称不能为空")returnnickname_new然后user/views将上面定义的表单引入.py,确定新的处理方法:change_nickname:from.formsimportLoginForm,RegForm,ChangeNicknameFormfrom.modelsimportProfiledefchange_nickname(request):redirect_to=request.GET.get('from',reverse('home'))ifrequest.method=='POST':form=ChangeNicknameForm(request.POST,user=request.user)ifform.is_valid():nickname_new=form.cleaned_data['nickname_new']个人资料,已创建=Profile.objects.get_or_create(user=request。user)profile.nickname=nickname_newprofile.save()returnredirect(redirect_to)else:form=changenicknameform()context={}context={'page_title']='修改修改修改'context['form_title'form_title']context['submit_text']='修改'context['form']=formcontext['return_back_url']=redirect_toreturnrender(request,'form.html',context)配置对应的路径由:user/rils.py中:创建对应的form.html在公共模板中{%extends'base.html'%}{%blocktitle%}{{page_title}}{%endblock%}{%blocknav_home_active%}active{%endblock%}{%blockcontent%}
