Returning URLs - Django REST fra

2019-11-01  本文已影响0人  Mead170810

返回URL-Django REST框架

reverse.py

返回URL

将REST体系结构风格与其他基于网络的风格区分开来的中心特性是它强调组件之间的统一接口。

罗伊·菲尔丁体系结构风格与基于网络的软件体系结构设计

通常,最好从WebAPI返回绝对URI,例如http://example.com/foobar,而不是返回相对URI,例如/foobar.

这样做的好处是:

REST框架提供了两个实用函数,使从WebAPI返回绝对URI更加简单。

您不需要使用它们,但是如果您使用它们,那么自描述API将能够自动为您超链接其输出,从而使浏览API更加容易。

倒转

签署: reverse(viewname, *args, **kwargs)

有相同的行为django.urls.reverse,除非它返回一个完全限定的URL,使用请求来确定主机和端口。

你应该将请求包含为关键字参数,例如:

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)

有相同的行为django.urls.reverse_lazy,除非它返回一个完全限定的URL,使用请求来确定主机和端口。

就像倒转函数,你应该将请求包含为关键字参数,例如:

api_root = reverse_lazy('api-root', request=request)
上一篇下一篇

猜你喜欢

热点阅读