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

时间:2016-07-14 14:53:28

标签: django django-rest-framework

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

要使用/api/v2/前缀输出生成的模式中的URL,我应该使用我的URL配置和/或路由器更改某些内容,还是应该使用自定义模式生成器,如{ {3}}?

以下是架构输出的示例(从请求/api/v2/开头,标题为/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_URLCONFROOT_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

1 个答案:

答案 0 :(得分:1)

我认为这是版本< = 3.4。

的问题

在当前的主人中解决了。

另见https://github.com/tomchristie/django-rest-framework/issues/4401