Django 1.10を使用しています私は 'django.contrib.auth.middleware.RemoteUserMiddleware'を利用しているWindows環境で作業しているので、ユーザ名に\文字を許可したいと思います。ドメイン\ユーザー名(私はドメインをいくつかのビジネスロジックで使用されているようにドロップする必要はありません)。DjangoはASCIIUsernameValidatorを上書きします
私はジャンゴ\のcontrib \認証\ validators.py簡単に十分と希望しているを変更することができますがregex = r'^[\[email protected]+-\\]+$'
するラインregex = r'^[\[email protected]+-]+$'
を修正することによって影響を与えるしかし、私は1つは簡単にこのクラスをオーバーライドすることができると思ったが、私は失敗しました。
私は(ここではSO上と同様の他の多くの)いくつかの有用なリンクを見つけた:
https://stackoverflow.com/a/39820162/4872140
https://stackoverflow.com/a/1214660/4872140
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
しかし、情報を日付、またはdoesnのさ最後の2つのケースでは、問題を解決する方法を正確に/完全に示していません。私は、AUTH_USER_MODELの変更が魅力的ではないので、アプリにうまくいきます。 settings.py:
AUTH_USER_MODEL = 'myapp.MyUser'
私は、「スワップモデル 『myapp.DomainUser』プロキシすることはできません」というエラーになり、次のようなユーザー・モデルにプロキシを使用することができるかもしれ考えて、とにかく試してみました:
class DomainASCIIUsernameValidator(ASCIIUsernameValidator):
regex = r'^[\[email protected]+-\\]+$'
class DomainUser(User):
username_validator = DomainASCIIUsernameValidator()
class Meta:
proxy = True
正規表現をASCIIUsernameValidator(およびUnicodeUsernameValidator)に置き換える方法は、Userモデルをそのままにしてください。 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のディスカッションを読んでおり、最初からカスタムユーザーを作成するとデフォルトのケースになるように感じるかもしれません。
うわー!私はちょうど新しいプロジェクトに着手しました。そして、私は次の日にこのプロジェクトにこのプロジェクトを打ち出します。 – AMG
新しいプロジェクトを開始する場合は、新しいユーザーモデルを作成することをお勧めします。彼らはそれをお勧めします[リンク](https://docs.djangoproject.com/en/dev/topics/auth/customizing/#substituting-a-custom-user-model): _新しいプロジェクトを開始する場合は、デフォルトのユーザーモデルで十分である場合でも、カスタムユーザーモデルを設定することを強くお勧めします。このモデルはデフォルトのユーザーモデルと同じように動作しますが、必要に応じて将来的にカスタマイズすることができます:_。 –