Django自动获取项目中的全部URL

Posted xiangxiaolin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django自动获取项目中的全部URL相关的知识,希望对你有一定的参考价值。

from django.utils.module_loading import import_string
from django.conf import settings
# for django 1.0
# from django.urls import RegexURLResolver, RegexURLPattern
# for django 2.0
from django.urls.resolvers import URLResolver, URLPattern


def recursion_urls(pre_namespace, pre_url, urlpatterns, url_ordered_dict):
    """
    递归的去获取URL
    :param per_namespace: namespace前缀,以后用户拼接name
    :param per_url: url前缀,以后用于拼接url
    :param urlpatterns: 路由关系列表
    :param url_ordered_dict: 用于保存递归中获取的所有路由
    :return:
    """
    for item in urlpatterns:
        if isinstance(item, URLPattern):  # 非路由分发
            if not item.name:
                continue
            if pre_namespace:
                name = %s:%s % (pre_namespace, item.name)
            else:
                name = item.name
            url = pre_url + str(item.pattern)

            url_ordered_dict[name] = name: name, url: url.replace(^, ‘‘).replace($, ‘‘)
        elif isinstance(item, URLResolver):
            if pre_namespace:
                if item.namespace:
                    namespace = %s:%s % (pre_namespace, item.namespace)
                else:
                    namespace = pre_namespace
            else:
                if item.namespace:
                    namespace = item.namespace
                else:
                    namespace = None
            recursion_urls(namespace, pre_url + str(item.pattern), item.url_patterns, url_ordered_dict)


def get_all_url_dict():
    """
    获取项目中所有的URL
    :return:
    """
    url_ordered_dict = OrderedDict()
    md = import_string(settings.ROOT_URLCONF)
    recursion_urls(None, /, md.urlpatterns, url_ordered_dict)  # 递归去获取所有的路由
    return url_ordered_dict

 

以上是关于Django自动获取项目中的全部URL的主要内容,如果未能解决你的问题,请参考以下文章

mxgraph js如何自动获取全部mxcell,即获取全部的cell.id ,大神们帮帮忙网上找不到,急用!!!

自动发现项目中的URL,django1版本和django2版本

在获取数据时,对 Django 项目使用 Select2 自动完成功能不起作用

Django项目:CMDB(服务器硬件资产自动采集系统)--01--01CMDB获取服务器基本信息

DJANGO开发的留言板, 如何获取上一页的url?

Django 使用request获取浏览器发送的参数