Reputation: 7557
I am trying to do simple crud demo project API's for mobile using django rest framework and getting below error
Project Name : crud_demo
App Name : crud_operations
crud_demo/urls.py
from django.conf.urls import include, url
from django.urls import path
urlpatterns= [
path('models/', views.model_list),
path('models/<int:pk>/', views.model_detail),
]
crud_operations/models.py
from django.db import models
# Create your models here.
class Member(models.Model):
firstname = models.CharField(max_length=40)
lastname = models.CharField(max_length=40)
crud_operations/serializers.py
from crud_operations.models import Member
from rest_framework import serializers
class MemberSerializer(serializers.ModelSerializer):
class Meta:
model = Member
fields = ('firstname', 'lastname')
crud_operations/views.py
from django.shortcuts import render, redirect
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from .models import Member
from crud_operations.serializers import MemberSerializer
@api_view(['GET', 'POST'])
def model_list(request):
if request == 'GET':
member = Member.objects.all()
serializer = MemberSerializer(member)
return Response(serializer.data)
elif request == 'POST':
serializer = MemberSerializer(data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
return Response({'key': request}, status=status.HTTP_200_OK)
@api_view(['GET', 'PUT', 'DELETE'])
def model_detail(request, pk):
try:
member = Member.objects.get(pk=pk)
except Member.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request == 'GET':
serializer = MemberSerializer(member)
return Response(serializer.data)
elif request == 'PUT':
serializer = MemberSerializer(member, data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif request.method == 'DELETE':
member.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
return Response({'key': 'value'}, status=status.HTTP_200_OK)
Upvotes: 2
Views: 6895
Reputation: 27523
@api_view(['GET', 'POST'])
def model_list(request):
if request.method == 'GET':
member = Member.objects.all()
serializer = MemberSerializer(member)
return Response(serializer.data)
elif request.method == 'POST':
serializer = MemberSerializer(data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
return Response({'key': request}, status=status.HTTP_200_OK)
request is content with a lot of objects, so to check the type, you need to use the method
attribute of the HttpRequest
object, to check what type of request is that, try the above ans
Upvotes: 5