【发布时间】:2018-04-23 22:07:10
【问题描述】:
我目前正在尝试使用 HyperlinkedModelSerializer,但出现错误:
无法使用视图名称“house-detail”解析超链接关系的 URL
那应该是 backend:house-detail,我的 REST api 中的所有视图都有那个“backend:”前缀。如何让 Django REST 自动添加该前缀?
【问题讨论】:
标签: python django django-rest-framework
我目前正在尝试使用 HyperlinkedModelSerializer,但出现错误:
无法使用视图名称“house-detail”解析超链接关系的 URL
那应该是 backend:house-detail,我的 REST api 中的所有视图都有那个“backend:”前缀。如何让 Django REST 自动添加该前缀?
【问题讨论】:
标签: python django django-rest-framework
但仍然不确定如何自动执行,所以如果我更改前缀,我需要手动更改。
这是使用基类和继承可以提供帮助的时候
class PrefixedSerializer(serializers.HyperlinkedModelSerializer):
prefix = 'backend'
url = serializers.HyperlinkedIdentityField(
view_name='{}:house-detail'.format(prefix)
)
所以现在HouseSerializer 继承自那个基类
class HouseSerializer(PrefixedSerializer):
# the other fields
【讨论】:
house-detail 部分隔离到HouseSerializer 中的变量中,但我希望我帮助您了解如何使用基类执行此操作!
要手动执行,请执行以下操作:
class HouseSerializer(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedIdentityField(
view_name='backend:house-detail'
)
...
但仍然不确定如何自动执行,所以如果我更改前缀,我需要手动更改。
【讨论】: