Django認証でユーザー名の代わりに電子メールアドレスを使用する最良の方法を数時間調査しています。このトピックは何度も議論されてきましたが、得られた結果には一貫性がありません。
1)ここでの回答は、「@」文字を含めるだけでユーザー名と電子メールを区別するスニペットを指しています。ただし、電子メールとユーザー名の最大長は等しくなく、回答では考慮されません。
2) S.Lott (13 票) からの同じリンクからの 2 番目の回答は、admin.site でいくつかの黒魔術を行っています。コードが何をしているのか私には意味がありません.これは短くて甘い方法で受け入れられていますか?
3)次に、この解決策を見つけました。これはほぼ完璧に思えます(そして私には理にかなっています):
username = uuid.uuid4().hex[:30]
一意の Python 生成 ID の最初の 30 文字のみがユーザー名として選択されます。しかし、まだ衝突の可能性があります。その後、誰かが主張している投稿に出くわしました
md5 ハッシュの base64 エンコーディングには 25 文字あります
それが本当なら、メール アドレスの md5 ハッシュの base64 エンコーディングを使用して、100% の一意のユーザー名を保証できませんか。これも 30 文字未満ですか? これが本当なら、どうすればこれを達成できますか?
どうもありがとう、