Source code for banjo.views
from django.shortcuts import render, reverse
from django.conf import settings
from django.http import JsonResponse
[docs]
def describe_route(urlpattern):
"""Introspects data from a url pattern"""
p = urlpattern
f = p.callback
return {
"name": p.name,
"human_name": p.name.replace("_", " ").capitalize(),
"description": f.__doc__ or "",
"arguments": {param: type_.__name__ for param, type_ in f.args.items()},
"url": reverse(p.name),
"api_url": reverse("api_" + p.name),
"method": f.method,
}
[docs]
def get_routes():
"""Returns a list of dicts, each describing a route in the app.
"""
from banjo.urls import user_defined_routes
return [describe_route(r) for r in user_defined_routes]
[docs]
def api(request):
"""A view which renders the API index page.
"""
return render(request, "banjo/api.html", {"routes": get_routes()})
[docs]
def api_json(request):
"Returns a JSON representation of available API routes"
routes = {'routes': get_routes()}
return JsonResponse(routes)