1

参考 Django Rest Framework 教程应用:

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 替换“片段”列表,该 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

非常感激,

4

1 回答 1

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。

希望这可以帮助。

于 2013-11-04T18:36:49.660 回答