mam projekt, który obejmuje wiele aplikacji:Django odpoczynek ramy łączące routery z różnych aplikacji
./project/app1
./project/app2
./project/...
Każda aplikacja posiada router dla Django odpoczynek ram włączenia części z API przez taki app:
from django.conf.urls import url, include
from rest_framework.routers import DefaultRouter
from .views import ThingViewSet
router = DefaultRouter()
router.register(r'things', ThingViewSet, base_name='thing')
urlpatterns = [
url(r'^', include(router.urls)),
]
Ponieważ aplikacje są oddzielne, mój plik URL najwyższego poziomu (./project/urls.py
) obejmuje każdy z plików adresów URL z oddzielnych aplikacji:
url(r'^api/app1/', include('app1.urls', namespace='a1')),
url(r'^api/app2/', include('app2.urls', namespace='a2')),
Oznacza to, że struktura REST Django pokazuje oddzielny główny katalog API dla każdej aplikacji. Chciałbym jednak mieć ujednoliconą strukturę interfejsu API, aby po przejściu na stronę http://example.com/api/
zobaczyłem pełną listę wszystkich adresów URL dostępnych na tym poziomie hierarchii.
Zakładam, że istnieje sposób na uwzględnienie wszystkich oddzielnych routerów zdefiniowanych w poszczególnych plikach urls.py
dla każdej aplikacji na jednym routerze, ale nie mogę znaleźć dokumentacji, jak to zrobić. Czy brakuje mi czegoś oczywistego?
Lub jeszcze prostszy możesz po prostu zaimportować swój router dla konkretnej aplikacji 'from app1.urls importuj router jako app1router', a następnie zarejestruj ten router za pomocą domyślnego routera w głównym pliku urls.py' router.registry.extend (app1router.registry) 'i wtedy nie musisz niczego podklasować. –