我在drf中执行crud,2个操作(get,post)运行良好,但在put和delete操作中出错。put()缺少1个必需的位置参数:“id”,删除时出现相同错误。delete()缺少1个必需的位置参数:“id”,当我试图通过在url中传递id来获取数据时,出现以下错误“get()获得意外的关键字参数“id”
我更改了url模式,但得到了相同的错误
VIEW
from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import get_object_or_404
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import Employee
from .serializer import EmployeeSerializer
class employeeList(APIView):
def get(self, request):
employee1 = Employee.objects.all()
serializer1 = EmployeeSerializer(employee1 , many = True)
return Response(serializer1.data)
def post(self, request):
employee1 = request.data.get("")
serializer1 = EmployeeSerializer(data=request.data,
partial=True)
if serializer1.is_valid(raise_exception=True):
employee_saved = serializer1.save()
return Response({"success": "Employee '{}' created
successfully".format(employee_saved.first_name)})
def put(self , request, id):
employee = get_object_or_404(Employee, id=id)
data = request.data.get("")
serializer1 = EmployeeSerializer(instance = employee ,
data=data, partial=True)
if serializer1.is_valid(raise_exception=True):
saved_employee = serializer1.save()
return Response({"success":"Employee '{}' updated
successfully".format(saved_employee.first_name)})
def delete(self, request, id):
employee = get_object_or_404(Employee, id=id)
employee.delete()
return Response({"message":"Employee '{}' deleted
successfully".format(employee.first_name)}, status=204)
序列化程序.py
from rest_framework import serializers
from .models import Employee
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = '__all__'
def create(self, validated_data):
return Employee.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.first_name=validated_data.get('first_name',instance.first_name)
instance.last_name =
validated_data.get('last_name',instance.last_name)
instance.employee_id =
validated_data.get('employee_id',instance.employee_id)
instance.save()
return instance
URLS.Py
from django.conf.urls import url
from django.contrib import admin
from webapp import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^employee/', views.employeeList.as_view()),
url(r'^employees/(?P<id>[0-9]+)$', views.employeeList.as_view())
]
我希望看到成功消息,但我得到了错误消息