Python django rest框架端点链接列表
使用django rest框架,我需要创建一个端点,列出指向其他端点的链接Python django rest框架端点链接列表,python,django,django-rest-framework,Python,Django,Django Rest Framework,使用django rest框架,我需要创建一个端点,列出指向其他端点的链接 router = DefaultRouter() router.register(r'pepperonis', views.PepperoniViewSet, 'Pepperoni') router.register(r'supremes', views.SupremeViewSet, 'Supreme') router.register(r'some-unrelated-endpoint', views.Unrelat
router = DefaultRouter()
router.register(r'pepperonis', views.PepperoniViewSet, 'Pepperoni')
router.register(r'supremes', views.SupremeViewSet, 'Supreme')
router.register(r'some-unrelated-endpoint', views.UnrelatedViewSet, 'Unrelated')
我感兴趣的这些视图集都继承自同一个类:
class Pizza(viewsets.ModelViewSet):
pass
class PepperoniViewSet(Pizza):
pass
class SupremeViewSet(Pizza):
pass
我可以从Pizza获取所有相关的视图集。如何创建只列出指向这些端点的超链接的API端点
我需要端点返回如下内容:
[{"url": "http://example.com/api/pepperonis/"}, {"url": "http://example.com/api/supremes/"}
您希望此端点位于API的基础上吗?如果是这样,(我可能错了),但我相信默认路由器会自动在API的根上创建一个端点,链接到所有其他端点 您可以在序列化程序中使用
HyperlinkedRelatedField
来执行此操作
例如:
class AlbumSerializer(serializers.ModelSerializer):
tracks = serializers.HyperlinkedRelatedField(
many=True,
read_only=True,
view_name='track-detail'
)
class Meta:
model = Album
fields = ('album_name', 'artist', 'tracks')
结果如下:
{
'album_name': 'Graceland',
'artist': 'Paul Simon',
'tracks': [
'http://www.example.com/api/tracks/45/',
'http://www.example.com/api/tracks/46/',
'http://www.example.com/api/tracks/47/',
...
]
}
参考资料:
端点需要明确。我可以灵活地放置端点,但我还需要包括诸如模型详细名称之类的内容。您阅读了吗: