# ২৩.৫ : ইউজার লগইন

আজকে আমরা ইউজার কে লগইন করাবো। লগইন করানোর জন্যে ইউজার এর থেকে username আর পাসওয়ার্ড নিবো। যদি সেগুলা সব ঠিক থাকে তাইলে তাকে লগইন করতে দিবো নাইলে তাকে রেজিস্ট্রেশন পেজে ফেরত পাঠিয়ে দিবো।&#x20;

সো সেটার জন্যে আমরা একটা লগইন serializer বানিয়ে ফেলবো নিচের মত করে।

patient/serializers.py

```python
class UserLoginSerializer(serializers.Serializer):
    username = serializers.CharField(required = True)
    password = serializers.CharField(required = True)
```

সো এটার জন্যে আমরা একটা ভিউ বানাবো সো এখানেও যেহেতু ইউজার পোস্ট রিকোয়েস্ট করবে সো আমরা মডেল ভিউ সেট এর বদলে এখানে ApiView কে ইউজ করবো। আর বলেছিলাম না কে এটা বাচ্চা দের মত অনেক টা, তাকে বলে দিতে হয় কি করতে হবে তাকে সো তাকে দিয়ে যে পোস্ট রিকোয়েস্ট হ্যান্ডেল করাবো সেটা তাকে বলে দিতে হবে ।

patient/views.py

```python
class UserLoginApiView(APIView):
    def post(self, request):
        serializer = serializers.UserLoginSerializer(data = self.request.data)
        if serializer.is_valid():
            username = serializer.validated_data['username']
            password = serializer.validated_data['password']

            user = authenticate(username= username, password=password)
            
            if user:
                token, _ = Token.objects.get_or_create(user=user)
                print(token)
                print(_)
                login(request, user)
                return Response({'token' : token.key, 'user_id' : user.id})
            else:
                return Response({'error' : "Invalid Credential"})
        return Response(serializer.errors)
```
