使用带有前缀视图名称的Django HyperlinkedModelSerializer

时间:2016-06-20 09:17:40

标签: python django django-rest-framework

我目前正在尝试使用HyperlinkedModelSerializer,但我收到错误:

  

无法使用视图名称“house-detail”解析超链接关系的URL

那应该是后端:house-detail ,我的REST api中的所有视图都有“backend:”前缀。如何让Django REST自动添加该前缀?

2 个答案:

答案 0 :(得分:2)

  

仍然不确定如何自动执行此操作,因此如果我更改了前缀,我需要手动更改内容。

这是在使用基类和继承时可以帮助

class PrefixedSerializer(serializers.HyperlinkedModelSerializer):
    prefix = 'backend'
    url = serializers.HyperlinkedIdentityField(
        view_name='{}:house-detail'.format(prefix)
    )

所以现在HouseSerializer继承自该基类

class HouseSerializer(PrefixedSerializer):
    # the other fields

答案 1 :(得分:0)

要手动完成,请执行以下操作:

class HouseSerializer(serializers.HyperlinkedModelSerializer):

    url = serializers.HyperlinkedIdentityField(
        view_name='backend:house-detail'
    )

    ...

仍然不确定如何自动执行此操作,因此如果我更改了前缀,我需要手动更改内容。