python DjangoRest框架-为什么我得到了一个错误,当函数甚至不应该做任何事情

gpnt7bae  于 2023-01-12  发布在  Python
关注(0)|答案(4)|浏览(147)

使用此URL:

path("products/product/<int:product>/rating/", ProductRating.as_view()),

和此视图来处理URL:

class ProductRating(APIView):
    permission_classes = [permissions.IsAuthenticated]
    serializer_class = ProductRatingSerializer

    def get(self, request):
        breakpoint()

在URL中,int:product中的产品只是所讨论的产品的id,无论我在那里输入什么,无论是int:pk还是int:id,我每次都得到相同的错误:

TypeError: get() got an unexpected keyword argument 'product'

我试过使用通用视图RetrieveAPIView和一个APIView,但我得到了同样的错误。为什么我得到了一个错误而不是断点?

3yhwsihp

3yhwsihp1#

def get(request, request, product):
        breakpoint()

现在应该可以了

kupeojn6

kupeojn62#

每当你处理一个在路径中有查询参数(id,pk,slug...)的url时,它会作为kwarg传递给view函数。所以你要么定义一个显式的参数来捕获它,要么你可以在函数中定义一个**kwargs参数。
实施:

def get(self, request, product):
    ....

def get(self, request, **kwargs):
    product = kwargs.get("product")
    ...
k5ifujac

k5ifujac3#

from django.http import JsonResponse

def get(self, request, *args, **kwargs):
   product_id = self.kwargs["product"]
   breakpoint()
   return JsonResponse(data={"status": "200, Yay it works"})
vhipe2zx

vhipe2zx4#

代码如下亲爱的

class ProductRating(APIView):
    permission_classes = [permissions.IsAuthenticated]
    serializer_class = ProductRatingSerializer

    def get(request, request, format=None):
        breakpoint()

相关问题