官方原文连接
本系列文章 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)
复制代码