Nested URL not showing in Django Rest Swagger

574 Views Asked by At

I'm trying to document my Django REST API using Django Rest Swagger.

My main url conf looks like this:

urlpatterns =[
    url(r'^tickers/', include('tickerapi.urls')),
]

and tickerapi/urls:

schema_view = get_swagger_view(title='Ticker API')

urlpatterns = [
    url(r'^docs/', schema_view),
    url(r'^(?P<channel_name>[-\w]+)/', include([
        url(r'^$', views.ChannelUpdateView.as_view(),name='channel_update'), 
        url(r'^ONAIR$', views.CarouselsOnAirContentList.as_view(),name='carousel_onair_content_list'),      
        url(r'^(?P<carousel_name>[-\w]+)$', views.CarouselUpdateView.as_view(), name='carousel_update'),
    ])),
]

As you can see, my url are nested in order to have different views handling the following urls:

  • /tickers/{channel_name} (Operations: PUT, PATCH)
  • /tickers/{channel_name}/ONAIR (Operations: GET)
  • /tickers/{channel_name}/{carousel_name} (Operations: GET, PUT, PATCH)

My issue is that Django Rest Swagger is only displaying part of the nested urls, like so: Django Rest Swagger Screenshot

From what I can understand Django Rest Swagger is considering that /tickers/{channel_name} and /tickers/{channel_name}/{carousel_name} is the same endpoint. Indeed, if I only allow GET operation on the view handling /tickers/{channel_name}/{carousel_name} (using a ListAPIView), the missing nest URL is showing in Swagger, minus the GET operation: Django Rest Swagger Screenshot

Has anyone come across this issue ? I'm using Django 1.10.5, Django Rest Framework 3.5.4 and Django Rest Swagger 2.1.1

Thank you for you help

0

There are 0 best solutions below