That’s a matter of perspective - RFC 5321 documents it pretty well. While I 
agree that, speculatively, the majority of servers may normalize emails to 
lower-case, it’s not officially recognized. I’m a fan of exhaustive 
documentation, but this is a standard set by an arguably higher authority.

Benny

> On Dec 12, 2021, at 10:15 PM, Arthur Pemberton <pemb...@gmail.com> wrote:
> 
> The current behaviour is an undocumented gotcha. It should at least be 
> mentioned in the documentation. Very few major login based platforms are case 
> sensitive, so it should be at least mentioned in the documentation that by 
> default applications built with Django would be different in that regard.
> 
> Arthur
> 
> On Sun, 12 Dec 2021 at 23:01, Benny <be...@twosensedesign.com 
> <mailto:be...@twosensedesign.com>> wrote:
> IMO this treads dangerously close to what I call a “Django Gotcha” - There 
> exist some implementations, where if you’re not paying attention, it’ll come 
> back to bite you in the keister. One example would be the test runner 
> coercing DEBUG=False in an effort for tests to more accurately reflect a 
> production environment.
> 
> Normalization is a nightmare all on its own without having to implicitly 
> introduce it.
> 
> Benny
> 
>> On Dec 12, 2021, at 9:40 PM, Kye Russell <m...@kye.id.au 
>> <mailto:m...@kye.id.au>> wrote:
>> 
>> Strong -1 on overriding user intent on capitalisation, especially for email 
>> addresses as the RFC stipulates that the local part of an email address is 
>> case sensitive, this is just rarely practiced. There are much better 
>> solutions out there (CI[Text|Char]FIeld in Postgres, etc) that enforce 
>> case-insensitivity purely for comparison operations which is where you 
>> really want it, but without overriding user intent wrt what case the user 
>> wants to use in their email or username.
>> 
>> Django could maybe do with easing the process of implementation for 
>> case-insensitive fields outside of Postgres. I’m not familiar enough with 
>> the other RDBMSs to know how workable that is. But the answer is certainly 
>> not discarding user intent. 
>> 
>> Kye
>> On 13 Dec 2021, 11:32 AM +0800, Arthur Pemberton <pemb...@gmail.com 
>> <mailto:pemb...@gmail.com>>, wrote:
>>> A setting to convert all usernames to lowercase would be good too -- that's 
>>> my preference overall in general. However I haven't yet seen how best that 
>>> could/would be accomplished.
>>> 
>>> For simpler uses case where I'm just sub-classing AbstractUser and not 
>>> customizing the auth backend, I've taken to overriding 
>>> UserManager.get_by_natural_key to allow for case-insensitive logins. Though 
>>> really, I probably should add a signal handler to force username to 
>>> lowercase.
>>> 
>>> Arthur
>>> 
>>> On Sunday, December 12, 2021 at 11:21:32 AM UTC-5 Uri wrote:
>>> Hi Arthur,
>>> 
>>> I would recommend users of Django to use only lowercase usernames. And if 
>>> they insist that the username is an email address, also convert it to 
>>> lowercase. Otherwise you can have 3 separate users uri, Uri, and uRI, or 3 
>>> separate users with email addresses u...@example.com <>, u...@example.com 
>>> <>, and u...@example.com <> (or even u...@example.com 
>>> <http://example.com/>). Maybe it's better to add an optional setting to 
>>> enforce usernames to be lowercase. And by the way also alphanumeric. You 
>>> don't want "!@#" to be a username on your system (or the user's name in 
>>> Chinese or Hebrew).
>>> 
>>> It's interesting that this ticket is 15 years old and still not completely 
>>> resolved.
>>> 
>>> By the way, when people type their email address, some programs (including 
>>> browsers) convert the first letter to uppercase, and I have received email 
>>> addresses from people with the first letter in uppercase, although their 
>>> true address is lowercase. I don't think you want this uppercase letter to 
>>> appear on your database in the email field.
>>> 
>>> אורי
>>> (Uri)
>>> 
>>> u...@speedy.net <>
>>> 
>>> On Sun, Dec 12, 2021 at 6:02 PM Arthur Pemberton <pem...@gmail.com <>> 
>>> wrote:
>>> Especially with the ability to set USERNAME_FIELD to "email", it would be 
>>> really useful to at least have a well documented warning that usernames are 
>>> case-sensitive in Django.
>>> 
>>> I've been using Django for years, and even I forget that fact some times. 
>>> Until I start Googling and come across [1].
>>> 
>>> Ideally, it would be great to have a setting (or model field) that would 
>>> allow easy switching to case insensitive usernames.
>>> 
>>> Arthur Pemberton
>>> 
>>> ----
>>> 
>>> [1] https://code.djangoproject.com/ticket/2273 
>>> <https://code.djangoproject.com/ticket/2273>
>>> 
>>> --
>>> You received this message because you are subscribed to the Google Groups 
>>> "Django developers (Contributions to Django itself)" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>> email to django-develop...@googlegroups.com <>.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/django-developers/9a5e1df3-778d-4993-8c32-57870fafd8f9n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/django-developers/9a5e1df3-778d-4993-8c32-57870fafd8f9n%40googlegroups.com?utm_medium=email&utm_source=footer>.
>>> 
>>> --
>>> You received this message because you are subscribed to the Google Groups 
>>> "Django developers (Contributions to Django itself)" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>> email to django-developers+unsubscr...@googlegroups.com 
>>> <mailto:django-developers+unsubscr...@googlegroups.com>.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/django-developers/c2bb1b2f-e1ac-4770-8989-ebb0fdc47a2cn%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/django-developers/c2bb1b2f-e1ac-4770-8989-ebb0fdc47a2cn%40googlegroups.com?utm_medium=email&utm_source=footer>.
>> 
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django developers (Contributions to Django itself)" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to django-developers+unsubscr...@googlegroups.com 
>> <mailto:django-developers+unsubscr...@googlegroups.com>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-developers/2b02d741-e49d-486e-b92d-92d0e233b9e9%40Spark
>>  
>> <https://groups.google.com/d/msgid/django-developers/2b02d741-e49d-486e-b92d-92d0e233b9e9%40Spark?utm_medium=email&utm_source=footer>.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django developers (Contributions to Django itself)" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to django-developers+unsubscr...@googlegroups.com 
> <mailto:django-developers+unsubscr...@googlegroups.com>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-developers/874D59C4-0933-44A1-AF38-AAF6A0F554A8%40twosensedesign.com
>  
> <https://groups.google.com/d/msgid/django-developers/874D59C4-0933-44A1-AF38-AAF6A0F554A8%40twosensedesign.com?utm_medium=email&utm_source=footer>.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django developers (Contributions to Django itself)" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to django-developers+unsubscr...@googlegroups.com 
> <mailto:django-developers+unsubscr...@googlegroups.com>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-developers/CA%2BX4dQTSxY%3DZNd0Tvo7ogYv-10ecXz4RuuFUXGcLV0-J7J7gEg%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/django-developers/CA%2BX4dQTSxY%3DZNd0Tvo7ogYv-10ecXz4RuuFUXGcLV0-J7J7gEg%40mail.gmail.com?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/BCE93C94-A535-444F-BF76-1055FCF9B736%40twosensedesign.com.

Reply via email to