Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让Django REST框架生成具有不同基本API URL的模式?_Django_Django Rest Framework - Fatal编程技术网

如何让Django REST框架生成具有不同基本API URL的模式?

如何让Django REST框架生成具有不同基本API URL的模式?,django,django-rest-framework,Django,Django Rest Framework,在将我的一个现有项目升级到Django REST Framework 3.4之后,我尝试使用coreapiCLI客户端与我的API交互。但是,我在获取、创建或更新资源时遇到问题,因为所有架构生成的API URL都映射到我的应用程序的基本URL/,而不是我的应用程序的API的基本URL,即/API/v2/ 要使用/api/v2/前缀获取要输出的生成架构中的URL,我应该使用URL配置和/或路由器更改某些内容,还是应该使用中所述的自定义架构生成器 下面是模式输出的一个示例(来自对/api/v2/的请

在将我的一个现有项目升级到Django REST Framework 3.4之后,我尝试使用
coreapi
CLI客户端与我的API交互。但是,我在获取、创建或更新资源时遇到问题,因为所有架构生成的API URL都映射到我的应用程序的基本URL
/
,而不是我的应用程序的API的基本URL,即
/API/v2/

要使用
/api/v2/
前缀获取要输出的生成架构中的URL,我应该使用URL配置和/或路由器更改某些内容,还是应该使用中所述的自定义架构生成器

下面是模式输出的一个示例(来自对
/api/v2/
的请求,标题为
Accept:application/vnd.coreapi+json
):

以下是如何在
app/api\u v2/api.py
中设置路由器:

from rest_framework.routers import DefaultRouter
from app.api_v2 import viewsets

api_v2 = DefaultRouter(schema_title='My API v2')
api_v2.register(r'categories', viewsets.CategoryViewSet)
...
from django.conf.urls import include, url
from app.api_v2.api import api_v2

import app.views

urlpatterns = [
    ...
    url(r'^api/v2/', include(api_v2.urls)),
    ...
]
设置中的My
ROOT\u URLCONF
配置为
ROOT\u URLCONF='myproject.url'
,并且
myproject/url.py
定义如下:

from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin

import app.views

admin.autodiscover()

urlpatterns = [
    ...
    url(r'^', include('app.urls')),
    ...
]
最后,
app/url.py

from rest_framework.routers import DefaultRouter
from app.api_v2 import viewsets

api_v2 = DefaultRouter(schema_title='My API v2')
api_v2.register(r'categories', viewsets.CategoryViewSet)
...
from django.conf.urls import include, url
from app.api_v2.api import api_v2

import app.views

urlpatterns = [
    ...
    url(r'^api/v2/', include(api_v2.urls)),
    ...
]

我想这是版本的问题,我也有同样的问题。你能解决你的问题吗?