diff --git a/django/contrib/auth/forms.py b/django/contrib/auth/forms.py index a0cfed09954..b4fb55c1b4d 100644 --- a/django/contrib/auth/forms.py +++ b/django/contrib/auth/forms.py @@ -191,7 +191,9 @@ class AuthenticationForm(forms.Form): # Set the max length and label for the "username" field. self.username_field = UserModel._meta.get_field(UserModel.USERNAME_FIELD) - self.fields['username'].max_length = self.username_field.max_length or 254 + username_max_length = self.username_field.max_length or 254 + self.fields['username'].max_length = username_max_length + self.fields['username'].widget.attrs['maxlength'] = username_max_length if self.fields['username'].label is None: self.fields['username'].label = capfirst(self.username_field.verbose_name) diff --git a/tests/auth_tests/test_forms.py b/tests/auth_tests/test_forms.py index 7085dcfa114..40e30501445 100644 --- a/tests/auth_tests/test_forms.py +++ b/tests/auth_tests/test_forms.py @@ -423,6 +423,7 @@ class AuthenticationFormTest(TestDataMixin, TestCase): CustomEmailField.objects.create_user(**data) form = AuthenticationForm(None, data) self.assertEqual(form.fields['username'].max_length, 255) + self.assertEqual(form.fields['username'].widget.attrs.get('maxlength'), 255) self.assertEqual(form.errors, {}) @override_settings(AUTH_USER_MODEL='auth_tests.IntegerUsernameUser') @@ -435,6 +436,7 @@ class AuthenticationFormTest(TestDataMixin, TestCase): IntegerUsernameUser.objects.create_user(**data) form = AuthenticationForm(None, data) self.assertEqual(form.fields['username'].max_length, 254) + self.assertEqual(form.fields['username'].widget.attrs.get('maxlength'), 254) self.assertEqual(form.errors, {}) def test_username_field_label(self):