"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 из другой директории. Вы уверены, что не совершаете подобную ошибку?