Я создал страницу регистрации пользователей, которая добавляет пользователей в модель пользователя в Django
Но когда данные сохраняются, пароль не шифруется, то есть сохраняется только как текст. Это создает проблему, когда пользователь пытается войти в систему (поскольку Django пытается расшифровать исходный пароль, и они оба не совпадают).
Кроме того, я расширяю модель пользователя, чтобы добавить дополнительную информацию о пользователях, которая сохраняется в модели профиля (используя ссылку «один на один»)
views.py
def user_signup(request):
if request.method == "POST":
user_form = userSignup(request.POST)
phone = request.POST['phone']
address = request.POST['address']
pincode = request.POST['pincode']
if user_form.is_valid() :
user = user_form.save()
auth.login(request,user)
userdata = User.objects.all()
for userinfo in userdata:
if userinfo.username == user.username:
user_id=user.id
update_data = Profile.objects.get(pk = user_id)
update_data.address=address
update_data.phone=phone
update_data.pincode=pincode
update_data.save()
return redirect('/')
else:
return HttpResponse(" SIGNUP FAILED")
else:
form = userSignup()
profile_form = userSignup_profile()
return render(request,"user_signup.html",{'form':form, 'profile_form':profile_form})
def user_logout(request):
auth.logout(request)
return redirect('/')
user_signup. html
<body>
<form action="user_signup" method="POST">
{% csrf_token %}
{{form.as_p}}
{{ profile_form.as_p}}
<button class="primary" type="submit" >SIGNUP </button>
</form>
</body>
Models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
phone = models.CharField(max_length=10)
address = models.TextField(max_length=200)
pincode = models.IntegerField()
forms.py
class userSignup(forms.ModelForm):
password = forms.CharField(max_length=50, widget = forms.PasswordInput())
class Meta:
model = User
fields = ('first_name', 'last_name','username', 'password', 'email')
Как я могу сохранить новый пароль пользователя в зашифрованном виде, а не фактический пароль ??