0からDRF(実戦とソースコードの剖析)を学びます。
10511 ワード
使い方
バージョン一般の2つの形態 a.URLにGETを通して()カスタム:http://127.0.0.1:8000/api/users/?version=v2 b.URLへの参照(推奨使用)
使用:プロファイル:
バージョン一般の2つの形態
class ParamVersion(object):
def determine_version(self, request, *args, **kwargs):
version = request.query_params.get('version')
return version
class UsersView(APIView):
versioning_class = ParamVersion
def get(self,request,*args,**kwargs):
#version = request._request.GET.get('version')
#print(version)
# version = request.query_params.get('version')
# print(version)
print(request.version)
return HttpResponse(' ')
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^(?P[v1|v2]+)/users/$' , views.UsersView.as_view()),
]
バージョンは設定ファイルでのみ設定する必要があります。REST_FRAMEWORK = {
"DEFAULT_VERSIONING_CLASS":"rest_framework.versioning.URLPathVersioning",
"DEFAULT_VERSION":'v1',
"ALLOWED_VERSIONS":['v1','v2'],
"VERSION_PARAM":'version',
}
class UsersView(APIView):
def get(self,request,*args,**kwargs):
print(request.version)
return HttpResponse(' ')
締め括りをつける使用:プロファイル:
REST_FRAMEWORK = {
"DEFAULT_VERSIONING_CLASS":"rest_framework.versioning.URLPathVersioning",
"DEFAULT_VERSION":'v1',
"ALLOWED_VERSIONS":['v1','v2'],
"VERSION_PARAM":'version',
}
ルートシステム:urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^api/', include('api.urls')),
]
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^(?P[v1|v2]+)/users/$' , views.UsersView.as_view(),name='uuu'),
]
表示:class UsersView(APIView):
def get(self,request,*args,**kwargs):
# 1.
print(request.version)
# 2.
print(request.versioning_scheme)
# 3. URL(rest framework)
u1 = request.versioning_scheme.reverse(viewname='uuu',request=request)
print(u1)
# 4. URL
u2 = reverse(viewname='uuu',kwargs={'version':2})
print(u2)
return HttpResponse(' ')