如何使Django REST Framework返回一个超链接列表而不是一个列表中的所有数据?

时间:2014-10-04 19:28:57

标签: python django api rest

我正在使用流行的Django REST框架在Python / Django中创建REST API。

然而,我偶然发现了一些事情。

我在下面的代码片段中有一个API调用来显示所有模因。

这将返回有关数据库中所有模因的所有已知信息的列表...如何让Django REST框架返回超链接的LIST以及有关每个超链接背后的特定模因的所有信息?或者这不是“RESTful”吗?对不起,但是这几天互联网上关于REST的FUD太多了,我还在学习这些东西。 : - )

提前感谢任何提示!

ķ。

(django)kristof@kristof:~/dev/projects/sandbox$ curl -i -H "Authorization: Token 3fcb196896cf361a586f200cd05d1fb76dc595e9" -X GET http://api.sandbox.dev:8080/memes/
HTTP/1.0 200 OK
Date: Sat, 04 Oct 2014 19:23:18 GMT
Server: WSGIServer/0.1 Python/2.7.6
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Allow: GET, POST, HEAD, OPTIONS

[{"id": 2, "name": "Overly Attached Girlfriend"}, {"id": 1, "name": "Good Guy Greg"}]

3 个答案:

答案 0 :(得分:1)

让自己更清楚:我希望/ memes /中的端点返回数据库中模因的URL列表,其中包含每个URL后面每个模因的更多详细信息。

我希望端点返回的是这样的:

["http://api.sandbox.dev:8080/memes/2/", "http://api.sandbox.dev:8080/memes/1/"]

而不是列出每个模因的所有细节。

答案 1 :(得分:1)

在你的序列化程序类中,在版本3中添加to_representation方法(我认为它是版本2中的to_native)。

def to_representation(self, obj):
    # maniputale your object here to create the hyperlink
    hyperlink = "/link/details/%s" % obj.id
    return hyperlink

此方法的返回值是响应列表中的一个元素。

Custom output with serializer in Django Rest Framework

答案 2 :(得分:0)

好像你正在收到一个Json。从json转换它,你将有你的列表

a = '[{"id": 2, "name": "Overly Attached Girlfriend"}, {"id": 1, "name": "Good Guy Greg"}]'
import json
type(json.loads(a))
list

在使用负载时,您应该注意一些事情,例如代码注入。谷歌它有一个概念