"detail": "Метод \"POST\" не разрешен." django rest framework.

Я новичок в django, поэтому испытываю проблемы с ним. Метод Post не разрешен. Я привел ниже views.py и urls.py. Пожалуйста, помогите мне с этим.

    views.py

    from django.shortcuts import render
    from rest_framework import viewsets,generics
    from user.serializer import UserSerializer,RetailerSerializer,ProductSerializer,Order_ItemsSerializer,Payment_DetailsSerializer,Order_DetailsSerializer
    from user.models import User,Retailer,Product,Order_Items,Payment_Details,Order_Details
    from product.models import Cart,Shipping_Address,Track_Repairs,NFT_Details
    from product.serializer import CartSerializer,Shipping_AddressSerializer,Track_RepairsSerializer,NFT_DetailsSerializer
    
    
    class AddProduct(generics.CreateAPIView):
        queryset = Product.objects.all()
        serializer_class = ProductSerializer

    class Product_List(viewsets.ModelViewSet):
        queryset = Product.objects.all().order_by('name')
        serializer_class = ProductSerializer

    class Product_Detail(generics.RetrieveAPIView):
        queryset = Product.objects.all().order_by('name')
        serializer_class = ProductSerializer

urls.py

from django.urls import path,include
from . import views
from rest_framework import routers

router = routers.DefaultRouter()
router.register(r'',views.Product_List)

urlpatterns = [
    path('product/',include(router.urls)),
    path('product/<int:pk>/',views.Product_Detail.as_view()),
    path("product/add/", views.AddProduct.as_view()),
]

Если вы не можете использовать метод post в наборе представлений Product_List, вы можете указать разрешенные http методы:

Ex:

    class Product_List(viewsets.ModelViewSet):
        queryset = Product.objects.all().order_by('name')
        serializer_class = ProductSerializer
        http_method_names = ["post"]

Разрешить несколько http-методов:

class Product_List(viewsets.ModelViewSet):
        queryset = Product.objects.all().order_by('name')
        serializer_class = ProductSerializer
        http_method_names = ["get","post"]

Я получал похожую ошибку, но я делал вызовы к неправильным url. Например, я обращался к http://127.0.0.1:8000/api/, а не к http://127.0.0.1:8000/api/api/ (плохое именование, я знаю), так как именно так я настроил api связанные url из другой директории. Вы уверены, что не совершаете подобную ошибку?

Вернуться на верх