Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django中的表单问题_Python_Django_Django Forms - Fatal编程技术网

Python Django中的表单问题

Python Django中的表单问题,python,django,django-forms,Python,Django,Django Forms,我正在尝试实现一个表单,让用户更改他们的密码 代码如下: forms.py views.py 它不起作用,因为未定义用户。问题是如何将用户传递给表单。思想?谢谢。可以从请求中获取用户列。一般来说,用户只需将其作为save方法的一个参数即可 是的,但我的问题是如何将其传递给表单。 class ChangePasswordForm(forms.Form): password1 = forms.CharField(widget = forms.PasswordInput(), required

我正在尝试实现一个表单,让用户更改他们的密码

代码如下:

forms.py

views.py


它不起作用,因为未定义用户。问题是如何将用户传递给表单。思想?谢谢。

可以从请求中获取用户列。一般来说,用户只需将其作为save方法的一个参数即可


是的,但我的问题是如何将其传递给表单。
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()
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})
def save(self, user):
    user.set_password(self.cleaned_data['password1'])
    user.save()

...


form.save(request.user)