Django1 11獲取所有url路徑

2021-09-24 16:27:40 字數 2397 閱讀 6027

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import re

from collections import ordereddict

from django.conf import settings

from django.utils.module_loading import import_string

from django.urls import regexurlresolver, regexurlpattern

defcheck_url_exclude

(url)

:"""

排除一些特定的url

:param url:

:return:

"""for regex in settings.auto_discover_exclude:

''' auto_discover_exclude = [

'/admin/.*',

'/login/',

'/logout/',

'/index/',

] '''

if re.match(regex, url)

:return

true

defrecursion_urls

(pre_namespace, pre_url, urlpatterns, url_ordered_dict)

:"""

遞迴的去獲取url

:param pre_namespace: namespace字首,以後使用者拼接name

:param pre_url: url字首,以後用於拼接url

:param urlpatterns: 路由關係列表

:param url_ordered_dict: 用於儲存遞迴中獲取的所有路由

:return:

"""for item in urlpatterns:

ifisinstance

(item, regexurlpattern)

:# 非路由分發,講路由新增到url_ordered_dict

ifnot item.name:

continue

if pre_namespace:

name =

"%s:%s"

%(pre_namespace, item.name)

else

: name = item.name

url = pre_url + item._regex # /rbac/user/edit/(?p\d+)/

url = url.replace(

'^','')

.replace(

'$','')

if check_url_exclude(url)

:continue

url_ordered_dict[name]

=elif

isinstance

(item, regexurlresolver)

:# 路由分發,遞迴操作

if pre_namespace:

if item.namespace:

namespace =

"%s:%s"

%(pre_namespace, item.namespace,

)else

: namespace = item.namespace

else

:if item.namespace:

namespace = item.namespace

else

: namespace =

none

recursion_urls(namespace, pre_url + item.regex.pattern, item.url_patterns, url_ordered_dict)

defget_all_url_dict()

:"""

獲取專案中所有的url(必須有name別名)

:return:

"""url_ordered_dict = ordereddict(

) md = import_string(settings.root_urlconf)

# from luff.. import urls

recursion_urls(

none

,'/'

, md.urlpatterns, url_ordered_dict)

# 遞迴去獲取所有的路由

print

(url_ordered_dict)

return url_ordered_dict

Django1 11框架開發流程簡述

本文章中基於ubuntu16.0.4系統中進行除錯。這裡提一下,django框架中setting.py檔案為總配置檔案,大家沒事別輕易修改哦。mkvirtualenv 虛擬環境名 p python3 pip install django workon 虛擬環境名 django admin start...

django1 11文件 模型重點筆記

模型最重要的屬性是manager。它是django 模型進行資料庫查詢操作的介面,並用於從資料庫提取例項 如果沒有自定義manager,則預設的名稱為objects。managers 只能通過模型類訪問,而不能通過模型例項訪問。可以在模型上定義自定義的方法來給你的物件新增自定義的 底層 功能。man...

獲取Django所有路由

直接上 from django.urls import regexurlpattern defget all urls patterns,pre fix,is firt time false,result if is firt time result.clear for item in patter...