简体   繁体   English

django-rest-framework到端点的链接列表

[英]django-rest-framework list of links to endpoints

Using django-rest-framework, I need to create an endpoint that lists links to other endpoints. 使用django-rest-framework,我需要创建一个端点,该端点列出到其他端点的链接。

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')

These viewsets I'm interested in all inherit from the same class: 我感兴趣的所有这些视图集都继承自同一类:

class Pizza(viewsets.ModelViewSet):
    pass

class PepperoniViewSet(Pizza):
    pass

class SupremeViewSet(Pizza):
    pass

I can get all the relevant viewsets from Pizza.__subclasses__(). 我可以从Pizza .__ subclasses __()获得所有相关的视图集。 How can I create an API endpoint that lists hyperlinks to only these endpoints? 如何创建仅列出到这些端点的超链接的API端点?

I'll need the endpoint to return something like this: 我需要端点返回如下内容:

[{"url": "http://example.com/api/pepperonis/"}, {"url": "http://example.com/api/supremes/"}

Do you want this endpoint to be at the base of our API? 您是否希望该终结点是我们API的基础? If so, (I could be wrong), but I believe the default router will automatically create an endpoint at the root of your API that links to all your other endpoints. 如果是这样,(可能是错误的),但是我相信默认路由器会在您API的根目录下自动创建一个端点,该端点链接到所有其他端点。

You can use HyperlinkedRelatedField in your Serializer to do this. 您可以在序列化程序中使用HyperlinkedRelatedField来执行此操作。

Example: 例:

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')

It will give result like: 它将给出如下结果:

{
'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/',
    ...
]
}

References: 参考文献:

django-rest-framework HyperLinkRelatedField Documentation. django-rest-framework HyperLinkRelatedField文档。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM