我正在尝试设置一系列 Django Rest Framework URL。
下面是我的 Serializer/ViewSet 妆容
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,\
模型 View 集、模型 ListView 集
router = routers.DefaultRouter()
router.register(r'models', ModelViewSet)
router.register(r'modellist', ModelListViewSet)
但是,当我运行 localhost 网络服务器时,DRF 前端会显示:
"models": "http://localhost:8000/datamaker/api/modellist/",
"modellist": "http://localhost:8000/datamaker/api/modellist/",
我该如何阻止?
我需要模型去模型和模型列表去模型列表。
非常感谢...
最佳答案
使用 base_name
争论:
router.register(r'models', ModelViewSet, base_name='models')
router.register(r'modellist', ModelListViewSet, base_name='modellist')
由于您的序列化程序共享相同的数据模型,因此 DRF 可能会在尝试自动发现 url 命名模式时卡住。所以在这种情况下最好明确设置
base_name
.如果您使用较新版本的 Django Rest Framework,则需要使用
basename='models'
而不是 base_name='model'
.
关于django - 如何解决 DRF 路由器重复的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34942156/