2016-07-14 25 views
1

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

要使生成的模式中的URL以/api/v2/前缀输出,应该使用我的URL配置和/或我的路由器更改某些内容,还是应该使用Django REST Framework documentation中描述的自定义模式生成器?

这里是模式输出的一个样品(从请求到/api/v2/与插头Accept:application/vnd.coreapi+json):

{ 
    "_type": "document", 
    "_meta": { 
     "title": "My API v2" 
    }, 
    "categories": { 
     "create": { 
      "_type": "link", 
      "url": "/categories/", 
      "action": "post", 
      "encoding": "application/json", 
      "fields": [ 
       { 
        "name": "title", 
        "required": true, 
        "location": "form" 
       } 
      ] 
     }, 
     "destroy": { 
      "_type": "link", 
      "url": "/categories/{pk}/", 
      "action": "delete", 
      "fields": [ 
       { 
        "name": "pk", 
        "required": true, 
        "location": "path" 
       } 
      ] 
     } 
    }, 
    ... 
} 

这里是路由器如何设置在app/api_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) 
... 

ROOT_URLCONF在设置中配置为ROOT_URLCONF = 'myproject.urls',而myproject/urls.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/urls.py

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)), 
    ... 
] 
+0

我有同样的问题。你能解决你的问题吗? – Manuel

回答