Django

⌘K
  1. Home
  2. Django
  3. Websoket+Celery Project C...
  4. 2.0 পর্ব ২User Api

2.0 পর্ব ২User Api

core/models.py

from django.db import models
from django.utils import timezone

class User(models.Model):
    deviceId = models.CharField(max_length=255)
    phoneNumber = models.CharField(max_length=255)
    status = models.CharField(max_length=255, default='inactive')
    createdAt = models.DateTimeField(default=timezone.now)
    updatedAt = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return f"{self.deviceId} ({self.phoneNumber})"

core/serializers.py

from rest_framework import serializers
from .models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

core/views.py

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import User
from .serializers import UserSerializer

class AuthenticateUserView(APIView):
    def post(self, request):
        device_id = request.data.get('deviceId')
        phone_number = request.data.get('phoneNumber')

        if not device_id or not phone_number:
            return Response({'error': 'deviceId and phoneNumber required'}, status=status.HTTP_400_BAD_REQUEST)

        user, created = User.objects.get_or_create(
            deviceId=device_id,
            defaults={'phoneNumber': phone_number}
        )
        if not created and user.phoneNumber != phone_number:
            return Response({'error': 'Wrong phone number'}, status=status.HTTP_401_UNAUTHORIZED)

        return Response({'message': 'Authenticated', 'user': UserSerializer(user).data})


class UserListView(APIView):
    def get(self, request):
        users = User.objects.all()
        return Response(UserSerializer(users, many=True).data)

core/urls.py

from django.urls import path
from .views import AuthenticateUserView, UserListView

urlpatterns = [
    path('users/authenticate/', AuthenticateUserView.as_view()),
    path('users/', UserListView.as_view()),
]

How can we help?