register: use ModelForm, and print all errors

This commit is contained in:
2023-10-31 21:14:24 +01:00
parent 54cc1b1705
commit a0c0d813b6
20 changed files with 203 additions and 258 deletions

View File

@ -1,29 +1,32 @@
from django.shortcuts import render
from django.views import View
from django.http import HttpResponse, HttpRequest
from django.http import HttpResponse, HttpRequest, JsonResponse
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login, logout
from django.db.models.query import QuerySet
from django.contrib.auth.decorators import user_passes_test
from ..status_code import *
from ..settings import *
from ..forms.register import RegisterForm
class RegisterView(View):
def get(self, request: HttpRequest):
return render(request, "register.html", {"form": RegisterForm})
if request.user.is_authenticated:
logout(request)
return render(request, 'register.html', {'form': RegisterForm})
def post(self, request: HttpRequest):
if request.user.is_authenticated:
logout(request)
form: RegisterForm = RegisterForm(request.POST)
if not form.is_valid():
return HttpResponse(INVALID_USERNAME_PASSWORD)
return JsonResponse(form.errors)
username: str = form.cleaned_data["username"]
password: str = form.cleaned_data["password"]
user: User = User.objects.create_user(username=form.cleaned_data['username'], password=form.cleaned_data['password'])
if User.objects.filter(username=username).exists():
return HttpResponse(USERNAME_ALREADY_USED)
user: User = User.objects.create_user(username, password=password)
user.save()
login(request, user)
return HttpResponse(USER_ADDED)