[英]Django Rest Framework Delete forbidden
我目前正在努力解決一些 django rest 框架問題。 我想為我的 APIView 定義一個刪除請求。
這是我的view.py:
class Employee(APIView):
permission_classes = (AllowAny, )
serializer_class = EmployeeSerializer
def get(self, request, pk, format=None):
employee = EmployeeModel.objects.get(pk=pk)
serializer = EmployeeSerializer(employee, many=False)
return Response(serializer.data)
def delete(self, request, pk, format=None):
employee = EmployeeModel.objects.get(pk=pk)
employee.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
這是我的 urls.py:
urlpatterns = [
path('', views.index, name='index'),
path('admin/', admin.site.urls),
path('api/auth/', include('rest_framework.urls')),
path('api-token-auth/', obtain_auth_token, name='api_token_auth'),
path('api/', include(router.urls)),
path('api/v1/employeelist/', views.EmployeeList.as_view()),
path('api/v1/employee/<pk>', views.Employee.as_view())
]
序列化器:
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = '__all__'
depth = 1
例如,當我調用 /api/v1/employee/4 時,get 方法工作正常。 API 的 UI 向我顯示了允許的方法:GET、DELETE、HEAD、OPTIONS 但是當我發送刪除請求時,我總是收到錯誤 403 forbidden。
有人知道為什么嗎?
除非您使用 get_serializer() ,否則序列化器類是什么並不重要,即使這樣它也可以很好地處理您的 get 請求。 我相信您的刪除問題是您可能正在使用 SessionAuthentication 或 BasicAuthentication(DRF 的默認設置)。 嘗試使您的視圖 csrf_exempt。
為您的 APIView 設置authentication_classes = []
。 DRF默認有SessionAuthentication和BasicAuthentication,需要關閉
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.