Django默认情况下将用户名视为区分大小写,现在用于身份验证我已经编写了自己的Authentication Backend用户名,以便在身份验证时处理不区分大小写的用户名.
如下所示:http://blog.shopfiber.com/?p = 220
现在,问题是:
我有各种各样的观点和实用方法,可以比较username一些刺痛.
即
request.user.username == username_from_some_other_system_as_str
Run Code Online (Sandbox Code Playgroud)
现在,如果用户名是yugal:
request.user.username == 'Yugal' # Returns False
Run Code Online (Sandbox Code Playgroud)
现在,它应该返回True[我想要实现的目标]
为此,我记得C++几天Operator Overloading.但我不认为简单地为django做那个auth user将是一个好主意,因为它auth user是紧密结合的django.此外,重载==将使整个类不仅对username字段不区分大小写.
那么,username即使在整个过程中进行比较,我应该如何处理这种不区分大小写的问题.
注意:
get_username始终无法创建返回小写用户名的方法,因为它需要重新考虑所有代码才能使用它.您可以为您的代码执行一次,但如果您使用的是第三方django应用程序则无法实现.
我知道这user.username.lower() = something.lower()是可能的,但是容易出错,而不是针对多开发人员设置中经常使用的东西的写入解决方案.
我SomeModel.objects.filter(username__iexact=username)尽可能地使用过.但这仍然让系统容易受到任何不知情的开发人员的错误的影响.
======================================
从概念上找出解决方案,但无法使其工作(帮助):
####### Custom CharField for username case-insensitivity #######
from django.db.models.fields import CharField
class iUnicode:
def __init__(self, value): …Run Code Online (Sandbox Code Playgroud)