POST, PUT, DELETE в Django RESTful не работает - PullRequest
0 голосов
/ 06 января 2019

Я хочу отправить сообщение на свой сервер Django, используя POST, чтобы я мог добавить элемент сотрудника.

views.py

class EmployeeList(generics.ListAPIView):
    queryset = Employee.objects.all()
    serializer_class = EmployeeSerializer


class EmployeeDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Employee.objects.all()
    serializer_class = EmployeeSerializer

models.py

class Employee(models.Model):
    firstname=models.CharField(max_length=10)
    lastname=models.CharField(max_length=10)
    emp_id=models.IntegerField()

    def __str__(self):
        return self.firstname;

serializer.py

class EmployeeSerializer(serializers.ModelSerializer):

    class Meta:
        model=Employee
        # fields={'firstname','lastname'}
        fields='__all__'

Мой запрос POST:

{
    "id": 8,
    "firstname": "zxcvb",
    "lastname": "bnmmm",
    "emp_id": 3
}

Ошибка, которую я получил:

{
    "detail": "Method \"POST\" not allowed."
}

Даже после использования generics.RetrieveUpdateDestroyAPIView Я не могу POST, PUT или DELETE.

PS: я новичок в Django REST framework.

1 Ответ

0 голосов
/ 06 января 2019

Чтобы предоставить обработчик метода post, вам потребуется представление с действием create() (CreateAPIView или ListCreateAPIView). Проверьте документацию о классах конкретного вида .

Измените ваше EmployeeList представление для наследования от ListCreateAPIView для добавления конечных точек чтения-записи для представления коллекции сотрудников

class EmployeeList(generics.ListCreateAPIView):
    queryset = Employee.objects.all()
    serializer_class = EmployeeSerializer

Теперь просто зарегистрируйте представления с помощью URL-адреса conf как обычно

urlpatterns = [
    path('employees/', EmployeeList, name='employee-list'),
    path('employees/<int:pk>/', EmployeeDetail, name='employee-detail'),
]

Классы конкретного представления отображают методы, определенные в миксинах, такие как ListModelMixin, CreateModelMixin, RetrieveModelMixin и т. Д., В методы HTTP. По умолчанию эти действия (см. здесь ) сопоставляются следующим HTTP-методам

  • list - get
  • create - post
  • retrieve - get
  • update - put
  • partial_update - patch
  • destroy - delete
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...