Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何排除DRF路由器重复URL故障_Django_Django Rest Framework - Fatal编程技术网

Django 如何排除DRF路由器重复URL故障

Django 如何排除DRF路由器重复URL故障,django,django-rest-framework,Django,Django Rest Framework,我正在尝试设置一系列Django Rest框架URL 下面是我的序列化程序/视图集的组成 class ModelSerializer(serializers.HyperlinkedModelSerializer): schemas = SchemaSerializer(many=True, read_only=True) class Meta: model = dbModels fields = ('ModelName', 'pk', 'schem

我正在尝试设置一系列Django Rest框架URL

下面是我的序列化程序/视图集的组成

class ModelSerializer(serializers.HyperlinkedModelSerializer):
    schemas = SchemaSerializer(many=True, read_only=True)
    class Meta:
        model = dbModels
        fields = ('ModelName', 'pk', 'schemas')

class ModelViewSet(viewsets.ModelViewSet):
    queryset = dbModels.objects.all()
    serializer_class = ModelSerializer

class ModelListSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = dbModels
        fields = ('ModelName', 'pk')

class ModelListViewSet(viewsets.ModelViewSet):
    queryset = dbModels.objects.all()
    serializer_class = ModelListSerializer
这是我的路由器列表: 从datagenerator.serializer导入UserViewSet\ ModelViewSet,ModelListViewSet

router = routers.DefaultRouter()
router.register(r'models', ModelViewSet)
router.register(r'modellist', ModelListViewSet)
但是,当我运行localhost Web服务器时,DRF前端显示如下:

"models": "http://localhost:8000/datamaker/api/modellist/",
"modellist": "http://localhost:8000/datamaker/api/modellist/",
我该怎么阻止这一切? 我需要模型转到模型,需要模型列表转到模型列表

非常感谢…

使用参数:

router.register(r'models', ModelViewSet, base_name='models')
router.register(r'modellist', ModelListViewSet, base_name='modellist')
由于序列化程序共享相同的数据模型,DRF可能无法自动发现url命名模式。因此,在这种情况下,最好显式设置
base\u name


如果您使用的是较新版本的Django Rest框架,则需要使用
basename='models'
而不是
base\u name='model'

确定。DRF仍然感到困惑。URL很好,但它们都运行到models API。我还缺什么?谢谢。你重启服务器了吗?现在应该可以了。DRF仍然感到困惑。现在,两个链接都很好,但是当您单击链接时,它们会转到同一个API。可能您的
SchemaSerializer
不起作用,所以两个序列化程序的输出都是相同的?是的。它们单独工作,但如果我加上两者,DRF会变得疯狂。这里的选项是是否获取带有输出的子对象。在某些情况下,我不想把整个事情都和孩子们放在一起,所以我只想要一份模特的名册。在其他情况下,我想要一个有所有孩子、孙子等的模型。。。。