Django REST Frameworkに再挑戦 その21 UserLogin API Validation
概要
Django REST Frameworkに再挑戦 その21 UserLogin API Validation
参考サイト
www.codingforentrepreneurs.com
UserLogin API Validation
- accounts/api/serializers.pyのUserLoginSerializer に、validationをつける。
class UserLoginSerializer(ModelSerializer): ... def validate(self, data): user_obj = None email = data.get("email", None) username = data.get("email", None) password = data["password"] if not email or not username: raise ValidationError("A username or email is required to login.") user = User.objects.filter( Q(email=email) | Q(username=username) ).distinct() if user.exists() and user.count() == 1: user_obj = user.first() else: raise ValidationError("ユーザー、emailが存在しません。") if user_obj: if not user_obj.check_password(password): raise ValidationError("パスワードが正しくありません。") data["token"] = "SOME RANDOM TOKEN" return data
- ただ、このvalidationでは、emailが登録されてない人たちがリストとして表示されてしまうので、以下の一文を差し込む。これは、nullと、"(空欄)"のリストを除くという意味だと思う。
user = user.exclude(email__isnull=True).exclude(email__iexact='')
- これでログイン実装完了か〜、この辺は、ライブラリの利用が必要なきがするな。