Django中的表单问题 [英] Problem with form in Django
本文介绍了Django中的表单问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这里代码:
forms.py
类ChangePasswordForm(forms.Form):
password1 = forms.CharField(widget = forms.PasswordInput(),required = True)
password2 = forms.CharField(widget = forms.PasswordInput(),required = True)
def clean_password2自我):
password1 = self.cleaned_data.get(password1,)
password2 = self.cleaned_data [password2]
如果password1!= password2:
raise form.ValidationError(两个密码字段不匹配)
return password2
def save(self,* args,** kw):
self。 user.set_password(self.cleaned_data ['password1'])
打印通过设置。
self.user.save()
views.py
def change_password(request):
form = ChangePasswordForm()
if request.method ==' POST':
form = ChangePasswordForm(request.POST,instance = request.user)
如果form.is_valid():
password1 = form.cleaned_data ['password1'];
password2 = form.cleaned_data ['password2'];
print password1 +==+ password2
form.save()
messages.success(请求,密码更新!)
返回HttpResponseRedirect('')
return render(request,'change_password.html',{'form':form})
它不起作用,因为没有定义用户。问题是如何将用户传递给表单。想法?谢谢。
解决方案
只需将其作为 save
方法的参数。
def save(self,user):
user.set_password(self.cleaned_data ['password1'])
user.save()
...
form.save(request.user)
I'm trying to implement a form for let the user change their password.
Here the code:
forms.py
class ChangePasswordForm(forms.Form):
password1 = forms.CharField(widget = forms.PasswordInput(), required = True)
password2 = forms.CharField(widget = forms.PasswordInput(), required = True)
def clean_password2(self):
password1 = self.cleaned_data.get("password1", "")
password2 = self.cleaned_data["password2"]
if password1 != password2:
raise forms.ValidationError("The two password fields didn't match.")
return password2
def save(self, *args, **kw):
self.user.set_password(self.cleaned_data['password1'])
print "Pass setted."
self.user.save()
views.py
def change_password(request):
form = ChangePasswordForm()
if request.method == 'POST':
form = ChangePasswordForm(request.POST, instance = request.user)
if form.is_valid():
password1 = form.cleaned_data['password1'];
password2 = form.cleaned_data['password2'];
print password1 + " == " + password2
form.save()
messages.success(request, "Password updated!")
return HttpResponseRedirect('')
return render(request, 'change_password.html', {'form': form})
It doesn't work because user is not defined. The problem is how to pass user to the form. Ideas? Thanks.
解决方案
Just make it a parameter to the save
method.
def save(self, user):
user.set_password(self.cleaned_data['password1'])
user.save()
...
form.save(request.user)
这篇关于Django中的表单问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文