Как объединить роутеры DjangoRestFramework для разных приложений - PullRequest
0 голосов
/ 23 октября 2018

Я использую Django 2.1 и DRF и планирую довольно большое приложение со многими подключенными приложениями.Я хотел бы иметь ОДИН /api URL-адрес для DRF в качестве конечной точки, но разрешить каждому приложению отображать специальную модель поверх конечной точки REST, например:

В основной urls.py:

router = routers.DefaultRouter()
router.register(r'users', UserViewSet)

urlpatterns = [
    # ...
    path('api/', include(router.urls)),
    # ...
]

и foo_app/urls.py:

router = routers.DefaultRouter()
router.register(r'foomodel', FooModelViewSet)

Теперь /api/foomodel выдает ошибку 404.Файл foo_model / urls.py импортируется (оператор print там печатается при запуске Django), а все остальные foo_model.urlpattern[path...] распознаются и работают нормально.

Как определить пользовательские конечные точки модели API для центральногоконечная точка REST API?Я ничего не нашел в документации.

Заранее спасибо.

1 Ответ

0 голосов
/ 24 октября 2018

В вашем основном urls.py вы бы сделали что-то вроде этого.(Это для Django 1.8)

urlpatterns += patterns('',
url(r'^api/', include(patterns('',
    url(r'^foo_app/', include('foo_app.urls')),
    url(r'^bar_app/', include('bar_app.urls')),
    url(r'^test_app/', include('test_app.urls')),
)))

)

это позволяет вам получить доступ ко всем вашим конечным точкам таким образом

localhost:8000/api/foo_app/<foo_app_endpoint>
localhost:8000/api/bar_app/<bar_app_endpoint>
localhost:8000/api/bar_app/<test_app_endpoint>
...