Django REST FRAMEWORK,如何创建链接嵌套List的自定义URL

时间:2013-11-04 18:04:39

标签: django rest frameworks

参考Django Rest Framework教程app:

https://github.com/tomchristie/rest-framework-tutorial

参考用户页面,即:

域/端口/片段/用户/

在我的案例中,答案如下:

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,在第一个用户的情况下链接到user1_snippets的页面,在用户2的情况下链接到user2的片段的页面......

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

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

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

然后很容易开发匹配的url conf和view。

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

我知道答案在于下面的文档,我最终会到达那里,但是一些指示会非常有用。

http://django-rest-framework.org/api-guide/relations.html

非常感谢,

1 个答案:

答案 0 :(得分:1)

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

http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis.html

如你所说,你需要在关系文章中寻找HyperlinkedIdentityField

所以你的序列化器看起来像这样:

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

    class Meta:
        model = User
        fields = ('snippets')

然后使用提供的'snippet-list'view_name解析url。

希望这有帮助。