2014-10-04 28 views
2

我使用流行的Django REST框架在Python/Django中創建REST API。如何使Django REST Framework返回一個超鏈接列表,而不是一個列表中的所有數據?

但是我偶然發現了一些東西。

我在下面的代碼片段中有一個API調用來顯示所有模因。

這將返回關於數據庫中所有模因的所有已知信息的列表...我如何讓Django REST框架返回超鏈接列表以及有關每個超鏈接背後的特定模因的所有信息?或者這不被認爲是「RESTful」?我很抱歉,但是互聯網上有很多關於REST的FUD,我仍然在學習這些東西。 :-)

在此先感謝您的任何提示!

K.

(django)[email protected]:~/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"}] 

回答

0

看來您收到一個JSON。從JSON轉換它,你將有你的列表

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

有使用負載時,像代碼注入你應該知道的出頭。谷歌它有一個概念

+0

感謝您的提示,這可能會派上用場其他的東西。你的回答也讓我意識到,我可能沒有讓自己清楚。 :-)查看我的其他評論:我希望端點返回一個URL列表(在每個URL後面都有更多詳細信息),而不是將當前的JSON列表轉換爲Python對象。很抱歉對於這個誤會。 – Braek 2014-10-04 22:26:26

+0

嘗試檢查帖子。我認爲它會幫助你http://stackoverflow.com/questions/21898043/how-to-put-absolute-url-field-in-serializer-model-in-django-rest-framework – 2014-10-04 22:49:35

1

爲了讓自己更清晰一些:我希望端點在/ memes /返回數據庫中memes的URL的列表,並提供每個URL後面每個meme的更多詳細信息。

我想要的終點返回什麼是因此這樣的:

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

,而不是與已經ALL每米姆的詳細列表。

1

在你的序列化類中,在版本3中添加一個to_representation方法(它在我認爲的版本2中是n_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

相關問題