2016-12-07 6 views
-3

私は本当にわからない部分がかなりありますが、私はログインを変更してユーザー名と電子メールの両方を使用するスクリプトをオンラインで見つけました。誰かが私に手を差し上げることができますし、このスクリプトの例ですか? django

同様に、私は各行の意味を理解していますが、それを行うことでログインが電子メールで行われる理由がわかりません。

class EmailBackend(object): 
    def authenticate(self, username=None, password=None): 
     user_cls = get_user_model() 
     try: 
      user = user_cls.objects.get(email=username) 
      if user.check_password(password): 
       return user 
     except user_cls.DoesNotExist: 
      return None 
     except: 
      return None 

    def get_user(self, user_id): 
     user_cls = get_user_model() 
     try: 
      return user_cls.objects.get(pk=user_id) 
     except user_cls.DoesNotExist: 
      return None 

ありがとうございます。

+0

代わりに電子メールのこのスクリプトを使用するユーザ名のタイトルが、バックエンドでは、このユーザ名は、電子メール、 'ユーザー= user_cls.objects.get(メール=ユーザー名)'あなたにユーザー名を変更することができなければなりません電子メール、問題はありません。 – metmirr

答えて

1

チェックコメント: -

class EmailBackend(object): 
    def authenticate(self, username=None, password=None): 
     user_cls = get_user_model() #Getting user object in one variable 

     try: 
      user = user_cls.objects.get(email=username) #Check any user exist with input email(username) with database email(consider as an username) 
      if user.check_password(password): #if user match then check is password match or not 
       return user #If both email and password match then return user information 
     except user_cls.DoesNotExist: #if user not exist then return None 
      return None 
     except: #got any error in middle return None 
      return None 

    def get_user(self, user_id): 
     user_cls = get_user_model() #Get user object in one variable 
     try: 
      return user_cls.objects.get(pk=user_id) #check user with this user_id exist or not, may be PK (some unique id consider as an user_id) 
     except user_cls.DoesNotExist: #if user_id(PK) not exist return None 
      return None 
+0

しかし、 '(email = username) 'のユーザー名はどうやってここに来ましたか?実際にdjangoに組み込まれているという「def authenticate」のためでしょうか? 'def get_user'はどのように使用されていますか?私の 'html'テンプレートにこれがなければ、エラーが発生します。 – Tsuna

+0

@Tsunaは、モデルになっている可能性があります電子メールであり、彼らは電子メールとユーザー名を考慮しているので、彼らは電子メールとユーザー名を比較しています。 'get_user'は特定のユーザデータ(pk)をチェックするために作成した関数で、データベース内で利用可能かどうかを示します。これがなければ、テンプレート内でuser_idというパラメータを持つこの関数を呼び出した可能性があるため、テンプレートが機能していない可能性があります。 –

関連する問題