官方原文連接
本系列文章 github 地址
轉載請註明出處python
一般,從 Web API(例如 http://example.com/foobar
)返回絕對 URI 多是更好的作法,而不是返回相對 URI,例如 /foobar
。git
這樣作的好處有:github
REST framework 提供了兩個實用函數,能夠更簡單地從 Web API 返回絕對 URI。django
使用它們不是必須的,可是若是你這樣作,自描述 API 將可以自動爲你輸出超連接,這使得瀏覽 API 變得更容易。api
簽名: reverse(viewname, *args, **kwargs)
ide
具備與 django.urls.reverse
相同的行爲,除了它返回一個徹底限定的 URL,使用 request 來肯定主機和端口。函數
你應該將 request 做爲關鍵字參數包含在該函數中,例如:post
from rest_framework.reverse import reverse
from rest_framework.views import APIView
from django.utils.timezone import now
class APIRootView(APIView):
def get(self, request):
year = now().year
data = {
...
'year-summary-url': reverse('year-summary', args=[year], request=request)
}
return Response(data)
複製代碼
簽名: reverse_lazy(viewname, *args, **kwargs)
ui
具備與 django.urls.reverse_lazy
相同的行爲,除了它返回一個徹底限定的 URL,使用 request 來肯定主機和端口。url
與 reverse
函數同樣,你應該將 request
做爲關鍵字參數包含在函數中,例如:
api_root = reverse_lazy('api-root', request=request)
複製代碼