diff --git a/redocs/api_parser.py b/redocs/api_parser.py index eccf92c..7665e23 100644 --- a/redocs/api_parser.py +++ b/redocs/api_parser.py @@ -5,7 +5,7 @@ from django.urls import URLPattern as RegexURLPattern from django.urls import URLResolver as RegexURLResolver except: - from django.core.urlresolvers import RegexURLResolver, RegexURLPattern + from django.core.urlresolvers import RegexURLResolver, RegexURLPattern from rest_framework.views import APIView from .api_endpoint import ApiEndpoint from django.contrib.admindocs.views import simplify_regex @@ -25,7 +25,10 @@ def __init__(self, *args, **kwargs): self.patterns = root_urlconf.urlpatterns def parse(self): - self._parse(self.patterns, self.endpoints) + self._parse( + self.patterns, + self.endpoints + ) def _parse(self, urlpatterns, parent_node, prefix=''): for pattern in urlpatterns: @@ -62,5 +65,3 @@ def _get_pattern_name(pattern): if hasattr(_pattern, '_route'): return str(_pattern._route) return '' - - diff --git a/redocs/urls.py b/redocs/urls.py index 7d42864..f5e5897 100644 --- a/redocs/urls.py +++ b/redocs/urls.py @@ -4,4 +4,3 @@ urlpatterns = [ url(r'^$', views.get_endpoints), ] - diff --git a/redocs/views.py b/redocs/views.py index 25915db..c7a8761 100644 --- a/redocs/views.py +++ b/redocs/views.py @@ -1,6 +1,8 @@ +import json + from django.shortcuts import render from .api_parser import ApiParser -import json +from django.conf import settings def walk_endpoints(tree, endpoints=None): @@ -27,6 +29,21 @@ def get_endpoints(request): api_parser.parse() endpoints = walk_endpoints(api_parser.endpoints) + force_script_name = getattr(settings, 'FORCE_SCRIPT_NAME', '') + if force_script_name: + if force_script_name.endswith('/'): + force_script_name = force_script_name[:-1] + + temp_endpoints = endpoints.copy() + endpoints = [] + for item in temp_endpoints: + new_item = {} + for k, v in item.items(): + if k == 'path': + v = force_script_name + v + new_item[k] = v + endpoints.append(new_item) + return render(request, 'redocs/index.html', { 'endpoints': json.dumps(endpoints), })