Django REST框架,如何创建链接嵌套列表的自定义URL

Django REST框架,如何创建链接嵌套列表的自定义URL,django,rest,frameworks,Django,Rest,Frameworks,参考Django Rest框架教程应用程序: 参考用户页面,即: 域/端口/代码段/用户/ 就我而言,答复如下: HTTP 200 OK Vary: Accept Content-Type: text/html; charset=utf-8 Allow: GET, HEAD, OPTIONS { "count": 2, "next": null, "previous": null, "results": [ { "

参考Django Rest框架教程应用程序:

参考用户页面,即:

域/端口/代码段/用户/

就我而言,答复如下:

HTTP 200 OK
Vary: Accept
Content-Type: text/html; charset=utf-8
Allow: GET, HEAD, OPTIONS

{
    "count": 2, 
    "next": null, 
    "previous": null, 
    "results": [
        {
            "url": "domain/port/snippets/users/1/", 
            "username": "super", 
            "snippets": [
                "domain/port/snippets/1/", 
                "domain/port/snippets/3/"
            ]
        }, 
        {
            "url": "domain/port/snippets/users/2/", 
            "username": "super2", 
            "snippets": [
                "domain/port/snippets/4/"
            ]
        }
    ]
}
我一直试图用一个URL替换“snippets”列表,在第一个用户的情况下链接到user1_snippets页面,在user2的情况下链接到user2的snippets页面

通过“代码片段列表”,我指的是这段文本(可能很长):“代码片段”:[ “域/端口/代码段/1/”, “域/端口/代码段/3/” ]

所以我只需要让框架生成如下代码:

<a href="domain:port/snippets/user/1">snippets</a>
 <a href="domain:port/snippets/user/2">snippets</a>

然后,开发匹配的url配置和视图将非常容易

我想这样做的原因是,在我自己的应用程序中,我的类似“片段”数量非常多,因此我认为将它们分组(在单独的页面上)以供一个(类似的)用户使用是明智的。然后我可以有“用户”页面,只用于发现用户。它将快速加载,易于解释等

我知道答案就在下面的文档中,我最终会找到答案的,但是一些提示会非常有用


非常感谢,

本教程中有一节介绍了所谓的“超链接”:

正如您所说,您需要在relations文章中查找
HyperlinkedEntityField

因此,您的序列化程序可能如下所示:

class HyperlinkedSerializer(serializers.HyperlinkedModelSerializer):
    snippets = serializers.HyperlinkedIdentityField(view_name='snippet-list')

    class Meta:
        model = User
        fields = ('snippets')
然后使用提供的“代码段列表”视图名称解析url


希望这有帮助。

本教程中有一节介绍所谓的“超链接”:

正如您所说,您需要在relations文章中查找
HyperlinkedEntityField

因此,您的序列化程序可能如下所示:

class HyperlinkedSerializer(serializers.HyperlinkedModelSerializer):
    snippets = serializers.HyperlinkedIdentityField(view_name='snippet-list')

    class Meta:
        model = User
        fields = ('snippets')
然后使用提供的“代码段列表”视图名称解析url


希望这有帮助。

非常感谢。虽然我最后没有这样做。我有一个可怕的黑客,它超越了hyperlinkedmodelserilier的“to_native”功能,我将URL附加到了一组序列化字段中。非常感谢。虽然我最后没有这样做。我有一个可怕的攻击,它超越了hyperlinkedmodelserizer的“to_native”函数,并将URL附加到序列化字段集。