1
In Django form instance can be either bound or unbound. So what you can do is fetch username from request convert it to lowercase and return bounded form with lowercased username.
FYI
def login(request, template_name='login.html',
redirect_field_name=REDIRECT_FIELD_NAME,
authentication_form=AuthenticationForm,
current_app=None, extra_context=None):
current_site = get_current_site(request)
if request.method == "POST":
username = request.POST.get('username').lower()
pass = request.POST.get('password')
form = authentication_form(request, data={'username':username, 'password':pass})
if form.is_valid():
#Login user and redirect to respective page
else:
context = {'form': form}
return TemplateResponse(request, template_name, context,
current_app=current_app)
else:
form = authentication_form(request)
context = {'form': form}
return TemplateResponse(request, template_name, context,
current_app=current_app)
Source:stackexchange.com