Django获取项目所有的urls列表
import re
from importlib import import_module
from rest_framework.views import APIView
from django.utils import six
from django.contrib.admindocs.views import simplify_regex
from django.conf import settings
from django.urls import URLPattern, URLResolver
class API_PATH:
"""
获取本项目的API列表
"""
_PATH_PARAMETER_COMPONENT_RE = re.compile(r'<(?:(?P<converter>[^>:]+):)?(?P<parameter>\w+)>')
def get_apis(self):
data = []
urlconf = settings.ROOT_URLCONF
if not isinstance(urlconf, six.string_types):
return []
urls = import_module(urlconf)
patterns = urls.urlpatterns
data = self.__get_api_endpoints(patterns)
return data
def __is_api_view(self, callback):
"""
如果给定的视图回调是DRF View/viewset,则返回True
"""
cls = getattr(callback, 'cls', None)
return (cl