Python Django Rest框架-如何在URL.py中获取Http头信息

Python Django Rest框架-如何在URL.py中获取Http头信息,python,django,django-views,django-rest-framework,django-urls,Python,Django,Django Views,Django Rest Framework,Django Urls,我正在制作一个基于Django的API,下面是我的URL.py from django.conf.urls import include, url api_version = "v1" urlpatterns = [ url(r'^v1/', include( "api."+ api_version +".urls", namespace=api_version )), ] 我要做的是从HTTPAccept头检索API版本。我尝试使用django.http.HttpRequest模

我正在制作一个基于Django的API,下面是我的URL.py

from django.conf.urls import include, url

api_version = "v1"

urlpatterns = [
    url(r'^v1/', include( "api."+ api_version +".urls", namespace=api_version )),
]
我要做的是从HTTPAccept头检索API版本。我尝试使用django.http.HttpRequest模块,但没有成功


有没有办法做到这一点

您无法访问
url.py上的请求,请参阅:

您可以在django rest框架上进行配置,并在请求对象上获取
版本
,如:

class SampleView(APIView):

 def post(self, request, format=None):
     if request.version == '1':
         return Response(status=status.HTTP_410_GONE)

或者使用
URLPathVersioning
方法。

对于特定的scnerio i-e for version,您无法访问url.py中的请求, 您可以为不同版本的api使用不同的url


我知道我可以在views.py中获取版本信息,但我要做的是在url.py中检索它。我当前的文件夹结构是api/v1/foo/views.py、api/v2/foo/views.py,因此我尝试根据http头api版本信息在URL.py中动态包含视图文件。您可以让两个URL使用相同的视图,然后根据请求区分代码。version@joelgoldstick我不想在一个地方添加所有版本的视图逻辑,但我想我必须这样做,因为它是使用AcceptHeadServerSioning所必需的。谢谢你的回答@JairHenrique不幸的是,我的老板希望我使用AcceptHeadServering
url(r'^v1/', include("api.v1.urls")),
url(r'^v2/', include("api.v2.urls")),
url(r'^v3/', include("api.v3.urls")),