I am trying to have a form that allows the user to change password.
Everytime I change the password, it cannot login. for example if password is "jake", I change to "jake1", I cant login with the password "jake1" or even "jake"
Here is how the form looks like: https://i.sstatic.net/W4fff.jpg
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/views.py
@login_required(login_url='/employee/sign-in/')
def employee_account(request):
employee_form = EmployeeFormEdit(instance = request.user)
if request.method == "POST":
employee_form = EmployeeFormEdit(request.POST, instance = request.user)
if employee_form.is_valid():
employee_form.save()
return render(request, 'employee/account.html', {
"employee_form":employee_form
})
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/forms.py
class EmployeeFormEdit(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
class Meta:
model = User
fields = ("password",)
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/templates/employee/account.html
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{% bootstrap_form employee_form %}
<button type="submit" class="btn btn-pink">Update</button>
</form>
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/models.py Its just using the standard User model
class Employee(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
class EmployeeFormEdit(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
class Meta:
model = User
fields = ("password",)
def save(self, commit=True):
user = super(EmployeeFormEdit, self).save(commit=False)
user.set_password(self.cleaned_data["password"])
if commit:
user.save()
return user
you must use user.set_password()
to set your password.