应使用名为“pk”的URL关键字参数调用视图ShowImageList

2024-04-18 04:37:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在访问url/show\u image/、/products/、/categories/时遇到以下问题。但是显示图像/(?P[\w-]+)/$url工作正常

Expected view ShowImageList to be called with a URL keyword argument named "pk". Fix your URL conf, or set the `.lookup_field` attribute on the view correctly.

我的网址.py是

url(r'^products',ProductList.as_view({'get': 'retrieve'}), name="product-list"),
url(r'^show_image/$', ShowImageList.as_view({'get': 'retrieve'}), name='ShowImage'),
url(r'^show_image/(?P<pk>[\w-]+)/$', ShowImageDetail.as_view({'get': 'retrieve'}), name='image_detail'),
url(r'^categories/', Categories.as_view({'get': 'retrieve'}), name= 'categories'),

我的视图.py是

class ShowImageList(ResponseModelViewSet):
    queryset = ProductImage.objects.all()
    serializer_class = ShowImageSerializer

    def post(self, request, *args, **kwargs):
        file = request.data['original']
        product = request.data['product']
        caption = request.data['caption']
        display_order = request.data['display_order']
        p = Product.objects.get(pk=product)
        ProductImage.objects.create(product=p, original=file, caption=caption, display_order=display_order)
        return Response(json.dumps({'message': "Uploaded"}))

class ShowImageDetail(ResponseModelViewSet):
    queryset = ProductImage.objects.all()
    serializer_class = ShowImageSerializer


class ProductList(ResponseModelViewSet):
    serializer_class = ProductLinkSerializer
    model=Product
    def get_queryset(self):
        return Product.objects.all()

除了/show\u image/(?P[\w-]+)/$


Tags: nameimageviewurldatagetobjectsrequest