Implement user authentication system with custom user model, views, and templates
- Created custom User model extending Django's AbstractUser. - Added user registration, login, and profile views with corresponding templates. - Implemented user authentication functionality and integrated Bootstrap for styling. - Updated project settings to use the new accounts app and user model. - Added tests for user model and admin functionality.
This commit is contained in:
parent
432d2b7707
commit
faddc4c9b0
22 changed files with 556 additions and 24 deletions
36
accounts/forms.py
Normal file
36
accounts/forms.py
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from django.contrib.auth.forms import UserCreationForm
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
from accounts.models import User
|
||||
|
||||
|
||||
class CustomUserCreationForm(UserCreationForm):
|
||||
"""Custom user creation form for the custom User model."""
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ("username",)
|
||||
|
||||
def __init__(self, *args, **kwargs) -> None:
|
||||
"""Initialize form with Bootstrap classes."""
|
||||
super().__init__(*args, **kwargs)
|
||||
# Add Bootstrap classes to form fields
|
||||
for field in self.fields.values():
|
||||
field.widget.attrs.update({"class": "form-control"})
|
||||
|
||||
def clean_username(self) -> str:
|
||||
"""Validate the username using the correct User model.
|
||||
|
||||
Returns:
|
||||
str: The cleaned username.
|
||||
|
||||
Raises:
|
||||
ValidationError: If the username already exists.
|
||||
"""
|
||||
username = self.cleaned_data.get("username")
|
||||
if username and User.objects.filter(username=username).exists():
|
||||
msg = "A user with that username already exists."
|
||||
raise ValidationError(msg)
|
||||
return username or ""
|
||||
Loading…
Add table
Add a link
Reference in a new issue