使用Django 1.10我想在用户名中使用\字符,因为我在使用'django.contrib.auth.middleware.RemoteUserMiddleware'的Windows环境中工作,远程用户以域\用户名(我有)不希望删除域,因为它在某些业务逻辑中使用).
我可以很容易地改变django\contrib\auth\validators.py并通过修改该行regex = r'^[\w.@+-]+$'来获得所需的影响,regex = r'^[\w.@+-\\]+$'但我认为可以轻松覆盖这个类但我失败了.
我发现了一些有用的链接(以及其他很多类似的链接):
https://docs.djangoproject.com/en/1.10/releases/1.10/#official-support-for-unicode-usernames https://docs.djangoproject.com/en/1.10/ref/contrib/auth/#django .contrib.auth.models.User.username_validator
但是信息已过时,或者没有完全/完全显示如何解决我的问题(在最后两个的情况下).我很好地进入了应用程序,因此更改AUTH_USER_MODEL并不具吸引力.settings.py:
AUTH_USER_MODEL = 'myapp.MyUser'
Run Code Online (Sandbox Code Playgroud)
无论如何我试过了,以为我可以在User模型上使用代理,如下所示导致错误"无法代理交换模型'myapp.DomainUser'":
class DomainASCIIUsernameValidator(ASCIIUsernameValidator):
regex = r'^[\w.@+-\\]+$'
class DomainUser(User):
username_validator = DomainASCIIUsernameValidator()
class Meta:
proxy = True
Run Code Online (Sandbox Code Playgroud)
有没有办法以用户模型保持原样的方式替换ASCIIUsernameValidator(和UnicodeUsernameValidator)中的正则表达式.如果您按照https://docs.djangoproject.com/en/1.10/ref/contrib/auth/#django.contrib.auth.models.User.username_validator中所述对用户模型进行子类化,那么您是否仍然坚持在AUTH_USER_MODEL中指定?
我已经阅读了https://groups.google.com/forum/#!topic/django-developers/MBSWXcQBP3k/discussion上的讨论,感觉从一开始就创建自定义用户可能会成为默认情况.
django ×1