Django Rest Framework Удаление запрещено - PullRequest
0 голосов
/ 27 января 2020

В настоящее время я борюсь с некоторыми django проблемами со средой отдыха. Я хочу определить запрос на удаление для моего 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

Метод get работает нормально, когда я вызываю / api / v1 / employee / 4, например. Пользовательский интерфейс API показывает мне разрешенные методы: GET, DELETE, HEAD, OPTIONS, но когда я отправляю запрос на удаление, я всегда получаю сообщение об ошибке 403.

Кто-нибудь знает почему?

1 Ответ

0 голосов
/ 27 января 2020

Неважно, что такое класс сериализатора, если вы не используете get_serializer (), и даже тогда он отлично работает с вашим запросом get. Я считаю, что ваша проблема для удаления заключается в том, что вы можете использовать SessionAuthentication или BasicAuthentication (по умолчанию для DRF). Попробуйте сделать ваше представление csrf_exempt.

...