Skip to content

Commit 55770e9

Browse files
Merge pull request #3 from ekonstantinidis/get-all-urls
List all the urls/views
2 parents 95b0bd7 + dae4604 commit 55770e9

File tree

6 files changed

+36
-2
lines changed

6 files changed

+36
-2
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ Finally include the `drfdocs` urls in your `urls.py`:
3434

3535
urlpatterns = [
3636
...
37-
url(r'^docs/', include('drfdocs.urls', namespace='drfdocs')),
37+
url(r'^docs/', include('drfdocs.urls', app_name='drfdocs', namespace='drfdocs')),
3838
]

drfdocs/api_docs.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from django.conf import settings
2+
from django.core.urlresolvers import RegexURLResolver, RegexURLPattern
3+
4+
5+
class ApiDocumentation(object):
6+
excluded_apps = ["admin", "drfdocs"]
7+
excluded_endpoints = ["serve"]
8+
root_urlconf = __import__(settings.ROOT_URLCONF)
9+
10+
def __init__(self):
11+
self.view_names = []
12+
self.get_all_view_names(self.root_urlconf.urls.urlpatterns)
13+
14+
def get_all_view_names(self, urlpatterns):
15+
for pattern in urlpatterns:
16+
if isinstance(pattern, RegexURLResolver) and (pattern.app_name not in self.excluded_apps):
17+
self.get_all_view_names(pattern.url_patterns)
18+
elif isinstance(pattern, RegexURLPattern) and (pattern.callback.__name__ not in self.excluded_endpoints):
19+
self.view_names.append(pattern.callback.__name__)
20+
21+
def get_views(self):
22+
return self.view_names

drfdocs/api_endpoint.py

Whitespace-only changes.

drfdocs/templates/drfdocs/base.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,7 @@
77
<body>
88
<h1>Django Rest Frameworks Docs</h1>
99

10+
{% block content %}{% endblock %}
11+
1012
</body>
1113
</html>

drfdocs/templates/drfdocs/home.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,9 @@
11
{% extends "drfdocs/base.html" %}
2+
3+
{% block content %}
4+
<ul>
5+
{% for view in views %}
6+
<li>{{ view }}</li>
7+
{% endfor %}
8+
</ul>
9+
{% endblock %}

drfdocs/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from django.views.generic.base import TemplateView
2+
from drfdocs.api_docs import ApiDocumentation
23

34

45
class DRFDocsView(TemplateView):
@@ -7,5 +8,6 @@ class DRFDocsView(TemplateView):
78

89
def get_context_data(self, **kwargs):
910
context = super(DRFDocsView, self).get_context_data(**kwargs)
10-
context['example'] = True
11+
docs = ApiDocumentation()
12+
context['views'] = docs.get_views()
1113
return context

0 commit comments

Comments
 (0)