首页 > 解决方案 > DRF新手 - 陷入小错误请协助

问题描述

我创建了 1 个 API,它从各个方面都可以正常工作。我创建了第二个 API 的 DRF 标题标题,显示了我做错的旧 API 的标题,请提供帮助。

序列化程序.py

from rest_framework import serializers
from .models import Brand, Category


class BrandSerializer(serializers.ModelSerializer):
    class Meta:
        model = Brand
        fields = (
            'id',
            'name',
            'slug',
            'icon',
            'featured_image',
            'url'
        )

class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category
        fields = (
            'id',
            'name',
            'slug',
            'featured_image',
        )

产品.url

router = routers.DefaultRouter()
router.register(r'', BrandViewSet)
router.register(r'', CategoryViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

产品视图

class CategoryViewSet(viewsets.GenericViewSet, mixins.RetrieveModelMixin, mixins.ListModelMixin):
    """
    API endpoint that allows sites to be viewed or edited
    """
    queryset = Category.objects.all()
    serializer_class = CategorySerializer

没有错误,但是当我运行 API url 时在浏览器中显示品牌列表而不是类别列表,

在此处输入图像描述

标签: python-3.xdjango-rest-framework

解决方案


问题是您将视图注册到同一端点。所以它解决了它找到的第一个。

所以对不同的端点进行注册,如下所示:

router = routers.DefaultRouter()
router.register(r'brands', BrandViewSet)
router.register(r'categories', CategoryViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

因此,您可以通过以下方式访问品牌127.0.0.1:8000/brands和类别127.0.0.1:8000/categories


推荐阅读