Я начинающий для django. Когда я регистрирую детали, используя регистрационную форму, которая не сохраняется в базе данных. В основном для этого я использую модель пользователя по умолчанию для этого с тремя дополнительными полями, такими как имя, фамилия и пароль подтверждения . для этого в шаблоне регистрации, где я могу использовать теги шаблона.
Вот мой файл forms.py:
class UserRegisterForm(forms.ModelForm):
email = forms.EmailField(label='Email Field')
password = forms.CharField(widget=forms.PasswordInput)
password1 = forms.CharField(widget=forms.PasswordInput)
firstname = forms.CharField()
lastname = forms.CharField()
class Meta:
model = User
fields = [
'firstname',
'lastname',
'email',
'password',
'password1',
]
def clean_password(self):
password = self.cleaned_data.get('password')
password2 = self.cleaned_data.get('password1')
if password != password2:
raise forms.ValidationError('passwords must match')
return password
view.py для фрагмента кода регистрации
def register_view(request):
next = request.GET.get('next')
form = UserRegisterForm(request.POST or None)
if form.is_valid():
user = form.save()
password = form.cleaned_data.get('password')
user.set_password(password)
user.save()
new_user = authenticate(username=user.username, password=password)
login(request, new_user)
if next:
return redirect(next)
return redirect('/')
context = {
'form': form,
}
return render(request, 'auth-register.html', context)
шаблон для авторизации. html
<form method="POST">{% csrf_token %}
<div class="row">
<div class="form-group col-6">
<label for="{{frist_name}}">First Name</label>
<input id="{{frist_name}}" type="text" class="form-control" name="frist_name" autofocus="">
</div>
<div class="form-group col-6">
<label for="{{last_name}}">Last Name</label>
<input id="{{last_name}}" type="text" class="form-control" name="last_name">
</div>
</div>
<div class="form-group">
<label for="{{email}}">Email</label>
<input id="{{email}}" type="email" class="form-control" name="email">
<div class="invalid-feedback">
</div>
</div>
<div class="row">
<div class="form-group col-6">
<label for="{{password}}" class="d-block">Password</label>
<input id="{{password}}" type="password" class="form-control pwstrength" data-indicator="pwindicator" name="password">
<div id="pwindicator" class="pwindicator">
<div class="bar"></div>
<div class="label"></div>
</div>
</div>
<div class="form-group col-6">
<label for="{{password1}}" class="d-block">Confirm Password</label>
<input id="{{password1}}" type="password" class="form-control" name="password-confirm">
</div>
</div>
<div class="form-group">
<div class="custom-control custom-checkbox">
<input type="checkbox" name="agree" class="custom-control-input" id="agree">
<label class="custom-control-label" for="agree">I agree with the terms and conditions</label>
</div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-lg btn-block">
Register
</button>
</div>
</form>
где я могу использовать шаблон jinja2 на странице html.