Django: Как создать функцию регистрации в django без использования Django Usercreation Form?
Я пытаюсь позволить пользователям создавать учетную запись без использования from django.forms import UserCreationForm
. Я просто хочу, чтобы пользователи использовали только поле ввода, а я мог взять то, что они передают в поле ввода и создать для них аккаунт.
Это django формы для создания пользователей с UserCreationForm, как мне теперь сделать то же самое, но без UserCreationForm?
views.py
def RegisterView(request):
if request.method == "POST":
form = UserRegisterForm(request.POST or None)
if form.is_valid():
new_user = form.save()
username = form.cleaned_data.get('email')
messages.success(request, f'Account Created')
new_user = authenticate(username=form.cleaned_data['email'],
password=form.cleaned_data['password1'],)
login(request, new_user)
return redirect('index')
elif request.user.is_authenticated:
return redirect('index')
else:
form = UserRegisterForm()
context = {
'form': form,
}
return render(request, 'userauths/sign-up.html', context)
forms.py
from django.contrib.auth.forms import UserCreationForm
from userauths.models import User
class UserRegisterForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
Вы можете сделать это, создав собственную пользовательскую модельForm.
Это будет включать в себя несколько этапов:
- удостоверить форму
- сохраните форму
- установите пароль, используя метод
user.set_password()
.