How to customize default auth login form in Django?

you can overide default Authentication form

like this

from django.contrib.auth.forms import AuthenticationForm, UsernameField

from django import forms


class UserLoginForm(AuthenticationForm):
    def __init__(self, *args, **kwargs):
        super(UserLoginForm, self).__init__(*args, **kwargs)

    username = UsernameField(widget=forms.TextInput(
        attrs={'class': 'form-control', 'placeholder': '', 'id': 'hello'}))
    password = forms.CharField(widget=forms.PasswordInput(
        attrs={
            'class': 'form-control',
            'placeholder': '',
            'id': 'hi',
        }
))

in url.py you can pass this custom authentication form like this

from django.contrib.auth import views

from myapp.forms import UserLoginForm
urlpatterns = [

    path(
        'login/',
        views.LoginView.as_view(
            template_name="login.html",
            authentication_form=UserLoginForm
            ),
        name="login"
)
]

also, you can override the login template

and customize the template as per you requirement

<form method="post">
    {{ form.non_field_errors }}
    <div class="form-group">
        
        <label for="{{ form.username.id_for_label }}">Username:</label>
        {{ form.username }}
        {{ form.username.errors }}

    </div>
    <div class="form-group">
       
        <label for="{{ form.password.id_for_label }}">Password:</label>
        {{ form.password }}
        {{ form.password.errors }}
    </div>
    <button type="submit">Login</button>
</form>

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)