Can anyone please help me? I am not able to create API with GET POST PUT DELETE methods. Also when I go to this url: "http://127.0.0.1:8000/api/packages/" I cant see Django default API view. My users API is working fine with all methods but not packages.
Models.py
class Customer(models.Model):
user = models.OneToOneField(
User, null=True, blank=True, on_delete=models.CASCADE)
name = models.CharField(max_length=50, null=True)
phone = models.CharField(max_length= 200, null = True)
dob = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
class Packages(models.Model):
STATUS = (
('Drafts', 'Drafts'),
('Published', 'Published'),
)
name = models.CharField(max_length=50, null=True)
details = models.CharField(max_length=200, null=True)
price = models.PositiveIntegerField()
days = models.CharField(max_length=10, null=True)
nights = models.CharField(max_length=10, null=True)
image = models.ImageField(null=True, blank=True)
status = models.CharField(max_length=200, null=True, choices=STATUS)
def __str__(self):
return self.name
Views.py
@csrf_exempt
def packagesAPI(request, id=0):
if request.method == 'GET':
packages = Packages.objects.all()
packages_serializer = PackagesSerializer(packages, many=True)
return JsonResponse(packages_serializer.data,safe=False)
elif request.method == 'POST':
packages_data = JSONParser().parse(request)
packages_serializer = PackagesSerializer(data = packages_data)
if packages_serializer.is_valid():
packages_serializer.save()
return JsonResponse("Added Successfully",safe=False)
return JsonResponse("Failed to Add",safe=False)
elif request.method == 'PUT':
packages_data = JSONParser().parse(request)
packages = Packages.objects.get(package_id = packages_data['package_id'])
packages_serializer = PackagesSerializer(packages,data = packages_data)
if packages_serializer.is_valid():
packages_serializer.save()
return JsonResponse("Updated Successfully",safe=False)
return JsonResponse("Failed to Update")
elif request.method == 'DELETE':
packages = Packages.objects.get(package_id=id)
packages.delete()
return JsonResponse("Deleted Successfully",safe=False)
@csrf_exempt
def SaveFile(request):
file = requestFILES['file']
file_name = default_storage.save(file.name, file)
return JsonResponse(file_name, safe=False)
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
This is my views.py file in which I define my API.
urls.py
router = routers.DefaultRouter()
router.register('users', UserViewSet)
urlpatterns = [
path('', include(router.urls)),
path('packages/', views.packagesAPI),
path('packages/<str:pk>', views.packagesAPI),
path('packages/savefile/', views.SaveFile)
]+static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
project urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('api.urls')),
path('auth/', obtain_auth_token),
]
Serializers.py file
class CustomerSerializer(serializers.ModelSerializer):
class Meta:
model = Customer
fields = '__all__'
class PackagesSerializer(serializers.ModelSerializer):
class Meta:
model = Packages
fields = '__all__'