Как сделать подтверждение пароля с помощью формы Django
Я создал (CustomUserForm), как показано ниже:
from django.contrib.auth.forms import UserChangeForm from .models import User from django import forms
class CustomUserForm(UserChangeForm):
username = forms.CharField(
widget=forms.TextInput(attrs={'class': 'form-control my-2', 'placeholder': 'Enter Username'}))
email = forms.CharField(
widget=forms.TextInput(attrs={'class': 'form-control my-2', 'placeholder': 'Enter The Email'}))
password1 = forms.CharField(
widget=forms.PasswordInput(attrs={'class': 'form-control my-2', 'placeholder': 'Enter The Password'}))
password2 = forms.CharField(
widget=forms.PasswordInput(attrs={'class': 'form-control my-2', 'placeholder': 'Confirm Password'}))
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
и соответствующее представление для создания нового пользователя:
from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
def register(request):
if request.method == 'POST':
form = CustomUserForm(request.POST)
if form.is_valid():
username=form.cleaned_data['username']
email=form.cleaned_data['email']
password=make_password(form.cleaned_data['password1'])
data=User(username=username,email=email,password=password)
data.save()
messages.success(request, "Registered Successfully")
return redirect('/login/')
else: #Here GET condition
form = CustomUserForm()
context = {'form': form}
return render(request, 'auth/register.html', context)
а это register.html
все работает правильно, кроме подтверждения пароля, я могу написать разные пароли для пароля 1 и 2 и пользователь все равно создается ..... спасибо
Вы можете сравнить их по запросу регистра, если оба пароля одинаковы.
def register(request):
if request.method == 'POST':
form = CustomUserForm(request.POST)
if form.is_valid():
username=form.cleaned_data['username']
email=form.cleaned_data['email']
if form.cleaned_data['password1'] == form.cleaned_data['password2']: # new line
password=make_password(form.cleaned_data['password1'])
data=User(username=username,email=email,password=password)
data.save()
messages.success(request, "Registered Successfully")
return redirect('/login/')
else: #Here GET condition
form = CustomUserForm()
context = {'form': form}
return render(request, 'auth/register.html', context)