Django

⌘K
  1. Home
  2. Django
  3. Websoket+Celery Project C...
  4. 2.2 MinutePrice এর api

2.2 MinutePrice এর api

✅ Step 1: models.py

class MinutePrice(models.Model):
    country_code = models.CharField(max_length=10, unique=True)
    price_per_minute = models.FloatField()

    def __str__(self):
        return f"{self.country_code} - {self.price_per_minute}"

✅ Step 2: serializers.py

from .models import MinutePrice

class MinutePriceSerializer(serializers.ModelSerializer):
    class Meta:
        model = MinutePrice
        fields = '__all__'

✅ Step 3: views.py

from .models import MinutePrice
from .serializers import MinutePriceSerializer
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status

# ✅ GET / POST / PUT for MinutePrice
class MinutePriceView(APIView):
    def get(self, request):
        prices = MinutePrice.objects.all()
        serializer = MinutePriceSerializer(prices, many=True)
        return Response(serializer.data)

    def post(self, request):
        serializer = MinutePriceSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    def put(self, request):
        country_code = request.data.get('country_code')
        price = request.data.get('price_per_minute')
        if not country_code or not price:
            return Response({'error': 'country_code and price_per_minute required'}, status=400)

        try:
            mp = MinutePrice.objects.get(country_code=country_code)
            mp.price_per_minute = price
            mp.save()
            return Response(MinutePriceSerializer(mp).data)
        except MinutePrice.DoesNotExist:
            return Response({'error': 'Country not found'}, status=404)

✅ Step 4: urls.py – অ্যাড করো:

from .views import MinutePriceView

urlpatterns += [
    path('minute-price/', MinutePriceView.as_view()),
]

✅ Postman টেস্ট ডেটা:

🔹 POST /api/minute-price/

{
  "country_code": "BD",
  "price_per_minute": 0.5
}

🔹 PUT /api/minute-price/

{
  "country_code": "BD",
  "price_per_minute": 0.8
}

✅ সারসংক্ষেপ:

EndpointMethodকাজ
/api/minute-price/GETসব রেট লিস্ট
/api/minute-price/POSTনতুন রেট অ্যাড
/api/minute-price/PUTআগের রেট আপডেট

How can we help?