参考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
非常感谢,
答案 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。
希望这有帮助。