Python 使用带有前缀视图名称的Django HyperlinkedModelSerializer
我当前正在尝试使用HyperlinkedModelSerializer,但出现错误: 无法使用视图名称“house detail”解析超链接关系的URLPython 使用带有前缀视图名称的Django HyperlinkedModelSerializer,python,django,django-rest-framework,Python,Django,Django Rest Framework,我当前正在尝试使用HyperlinkedModelSerializer,但出现错误: 无法使用视图名称“house detail”解析超链接关系的URL 应该是backend:house detail,我的RESTAPI中的所有视图都有“backend:”前缀。如何让Django REST自动添加前缀?要手动添加前缀,请执行以下操作: class HouseSerializer(serializers.HyperlinkedModelSerializer): url = seriali
应该是backend:house detail,我的RESTAPI中的所有视图都有“backend:”前缀。如何让Django REST自动添加前缀?要手动添加前缀,请执行以下操作:
class HouseSerializer(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedIdentityField(
view_name='backend:house-detail'
)
...
但仍然不知道如何自动完成,所以如果我更改前缀,我需要手动更改
但仍然不知道如何自动完成,所以如果我更改前缀,我需要手动更改
这是使用基类和继承可以帮助的时候
class PrefixedSerializer(serializers.HyperlinkedModelSerializer):
prefix = 'backend'
url = serializers.HyperlinkedIdentityField(
view_name='{}:house-detail'.format(prefix)
)
所以现在HouseSerializer
继承自该基类
class HouseSerializer(PrefixedSerializer):
# the other fields
伟大的Django REST框架似乎不存在;我没有办法自动做到这一点,但在这里使用继承很好。“self.”确实给出了一个变量未定义的错误,只是删除它就可以了。@user158024哦,是的,我并没有真正努力给出正确的语法,而且您可能还必须将
house detail
部分隔离到house serializer
中的一个变量中,但我希望我帮助您了解了如何使用基类实现这一点!你当然做到了。