django快速获取项目所有的URL

django1.10快速获取项目所有的URL列表,可以用于权限控制

函数如下:

import re
def get_url(urllist , parent='' , depth=0 , url_list=[] , url_dict={}):
for entry in urllist:
url = entry.regex.pattern
if re.search('\(' , url) :
continue
#过滤正则表达式的URL地址 url = url.replace(r'^' , '')
url = url.replace(r'$' , '')
url = url.replace(r'/' + '$' , '') if depth == 0:
if url in ['admin' , 'admin/' , 'auth' , 'auth/']:
continue
#过滤admin和auth等app if re.search('\/$' , url) :
url_list.append('/' + url)
else :
url_list.append('/' + parent + url) try :
url_dict['/'].append('/' + url)
except :
url_dict['/'] = []
url_dict['/'].append('/' + url)
else :
url_list.append('/' + parent + url)
try :
url_dict['/' + parent].append('/' + parent + url)
except :
url_dict['/' + parent] = []
url_dict['/' + parent].append('/' + parent + url) if hasattr(entry, 'url_patterns'):
get_url(entry.url_patterns , url , depth + 1) # url_dict = {'/basicdata/': ['/basicdata/provider/add', '/basicdata/provider/export', '/basicdata/provider/list', '/basicdata/provider/detail'], '/': ['/basicdata/', '/login.html']} # url_list = ['/basicdata/', '/basicdata/department/export', '/basicdata/department/list', '/basicdata/department/detail', '/basicdata/department/edit', '/login.html', '/index.html'] return url_dict

注意:

调用get_url函数获得清单,必须使用函数或者class来封装

def recreate(request):
from library.django.get_url import get_url
from lykops import urls
url_dict = get_url(urls.urlpatterns)
print(url_dict) return HttpResponseRedirect(reverse('list'))

然后修改urls.py

urlpatterns = [
......
url(r'^/recreate/', views.recreate, name="recreate"),
......
]

如果其他函数调用的话,报错AttributeError: module ‘lykops.urls’ has no attribute ‘urlpatterns’

  File "/opt/lykops/sysadmin/urls.py", line 5, in <module>
url(r'^app/add', views.App().add, name="add_app"),
File "/opt/lykops/sysadmin/views.py", line 76, in __init__
self.recreate()
File "/opt/lykops/sysadmin/views.py", line 79, in recreate
url_dict = get_allurl(urls.urlpatterns)
AttributeError: module 'lykops.urls' has no attribute 'urlpatterns'

[置顶] django快速获取项目所有的URL的更多相关文章

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

    import re from collections import OrderedDict from django.conf import settings from django.utils.mod ...

  2. java获取项目路径,url路径

    我的web项目名iamgeModel. 工作空间在D盘 先获取url相关: 需要是HttpServletRequest request; 获取IP: request.getServerName() / ...

  3. Python - 超好用的第三方库pathlib,快速获取项目中各种路径

    前言 之前曾介绍过Python的os库详细使用方式,具体可看看这篇博文:https://www.cnblogs.com/poloyy/p/12341231.html 博主在学完os库之后,就开始投入使 ...

  4. [置顶] Django 微信开发(一)——环境搭建

    Django 微信开发(一)——环境搭建 随着移动互联网时代的到来,微信——一个改变着我们生活的产品悄悄走近了我们的生活.我们不得不觉得自己很幸运,自己能在这个世界上遇到像QQ.微博.微信这样优秀的产 ...

  5. [置顶] 智能家居开源项目 The open Home Automation Bus (openHAB)

    ================================================================================ 2014-05-19 论文的事情太多, ...

  6. [置顶] Maven多模块项目 eclipse热部署 Maven项目实现 tomcat热部署 二

    最近看到有好多童鞋比较热衷热部署,特别是多模块的项目,其实这热部署如果多模块比较大资源,容易内存溢出或者电脑卡住,并不建议这么做. 不过了解下也没有关系,这里我就在说说热部署的另外一种方法,因为我之前 ...

  7. [置顶] oracle 快速查询数据库各种信息、及转换对应java代码

    1 查询表中数据量 select 'select '||''''||t.TABLE_NAME||''''||' as table_name, count(*) from '|| t.TABLE_NAM ...

  8. [置顶] 利用Global.asax的Application_BeginRequest 实现url 重写 无后缀

    利用Global.asax的Application_BeginRequest 实现url 重写 无后缀 <%@ Application Language="C#" %> ...

  9. IOS 作业项目 TableView两个section中cell置顶功能实现

    点击cell会置顶,其他的下移

随机推荐

  1. 图文详解安装PHP运行环境

    一.什么是PHP运行环境 能够理解人与计算机交流时语言软件,通常指解释PHP编程语言的软件. 例如: PHP(代码) 需要PHP超文本预编译器(软件). Java需要JVM虚拟机 二.安装PHP运行环 ...

  2. adb命令模拟按键事件

    //这条命令相当于按了设备的Backkey键 adb shell input keyevent 4 //可以解锁屏幕 adb shell input keyevent  82 //在屏幕上做划屏操作, ...

  3. PAT1038(两个运行超时 未解决

    # include<iostream> # include<algorithm> using namespace std; int jishu(int a[],int N,in ...

  4. 【转】Unity3D学习日记(一)使用UGUI制作虚拟摇杆

    http://blog.csdn.net/begonia__z/article/details/51170059 如今手机游戏玩法多种多样,尤其使用虚拟摇杆进行格斗类游戏开发或者是MMORPG成为了主 ...

  5. 第六篇:python基础_6 内置函数与常用模块(一)

    本篇内容 内置函数 匿名函数 re模块 time模块 random模块 os模块 sys模块 json与pickle模块 shelve模块 一. 内置函数 1.定义 内置函数又被称为工厂函数. 2.常 ...

  6. 洛谷P3045 [USACO12FEB]牛券Cow Coupons

    P3045 [USACO12FEB]牛券Cow Coupons 71通过 248提交 题目提供者洛谷OnlineJudge 标签USACO2012云端 难度提高+/省选- 时空限制1s / 128MB ...

  7. react 基础语法复习2- react入门以及JSX

    引入 react 以及 ReactDom import React from 'react'; import ReactDOM from 'react-dom'; 将react组件渲染到真实dom节点 ...

  8. .bat 处理错误码

    某些命令只会返回error level,而要添加互操作性,.bat文件的返回值,exit code应该最后指定,那么需要,在这个单行的命令后面单个添加处理error level 的语句,最后再做统一的 ...

  9. 《手把手教你学C语言》学习笔记(2)---学习C语言的目标和方法

    一.学习C语言的目标主要是: 熟练掌握C语言的关键字,语法规则,程序控制等: 掌握基本的数据结构,数组.链表.栈和队列等: 掌握C语言中指针和内存.数组与指针.函数与指针.变量和指针.结构体和指针.硬 ...

  10. Markdown语法格式

    Markdown是一种可以普通文本编辑器编写的标记语言,通过简单的标记语法,就可以使普通文本内容具有一定的格式.(摘自百度百科) 今天记录一下Markdown语法,以供以后使用时查询. 1.标题 用 ...