title: Extending custom router to default router across apps in Django Rest Framework
body: <p>I have come across a problem regarding having the API apps seperate, while still being able to use the browsable API for navigation.</p>
  
  <p>I have previously used a seperate <code>routers.py</code> file in my main application containing the following extension of the <code>DefaultRouter</code>.</p>
  
  <pre><code>class DefaultRouter(routers.DefaultRouter):
      def extend(self, router):
          self.registry.extend(router.registry)
  </code></pre>
  
  <p>Followed by adding the other application routers like this:</p>
  
  <pre><code>from . routers import DefaultRouter
  from app1.urls import router as app1_router
  
  # Default Router
  mainAppRouter = DefaultRouter()
  mainAppRouter.extend(app1_router)
  </code></pre>
  
  <p>where the <code>app1_router</code> is a new <code>SimpleRouter</code> object.</p>
  
  <p>Now the problem occurs when I want to modify the <code>SimpleRouter</code> and create my own <code>App1Router</code>, such as this</p>
  
  <pre><code>class App1Router(SimpleRouter):
  
      routes = [
          Route(
              url = r'^{prefix}{trailing_slash}$',
              mapping = {
                  'get': 'retrieve',
                  'post': 'create',
                  'patch': 'partial_update',
              },
              name = '{basename}-user',
              initkwargs = {}
          ),
      ]
  </code></pre>
  
  <p>This will not handle my extension correctly. As an example, <code>GET</code> and <code>PATCH</code> are not recognized as allowed methods whenever I extend the router, but when I dont extend, but only use the custom router, everything works fine.</p>
  
  <p>My question is therefor, <em>how can I handle extending custom routers across seperate applications, but still maintain a good browsable API</em>? </p>