[置顶] django快速获取项目所有的URL
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的更多相关文章
- Django自动获取项目中的全部URL
import re from collections import OrderedDict from django.conf import settings from django.utils.mod ...
- java获取项目路径,url路径
我的web项目名iamgeModel. 工作空间在D盘 先获取url相关: 需要是HttpServletRequest request; 获取IP: request.getServerName() / ...
- Python - 超好用的第三方库pathlib,快速获取项目中各种路径
前言 之前曾介绍过Python的os库详细使用方式,具体可看看这篇博文:https://www.cnblogs.com/poloyy/p/12341231.html 博主在学完os库之后,就开始投入使 ...
- [置顶] Django 微信开发(一)——环境搭建
Django 微信开发(一)——环境搭建 随着移动互联网时代的到来,微信——一个改变着我们生活的产品悄悄走近了我们的生活.我们不得不觉得自己很幸运,自己能在这个世界上遇到像QQ.微博.微信这样优秀的产 ...
- [置顶]
智能家居开源项目 The open Home Automation Bus (openHAB)
================================================================================ 2014-05-19 论文的事情太多, ...
- [置顶] Maven多模块项目 eclipse热部署 Maven项目实现 tomcat热部署 二
最近看到有好多童鞋比较热衷热部署,特别是多模块的项目,其实这热部署如果多模块比较大资源,容易内存溢出或者电脑卡住,并不建议这么做. 不过了解下也没有关系,这里我就在说说热部署的另外一种方法,因为我之前 ...
- [置顶] oracle 快速查询数据库各种信息、及转换对应java代码
1 查询表中数据量 select 'select '||''''||t.TABLE_NAME||''''||' as table_name, count(*) from '|| t.TABLE_NAM ...
- [置顶] 利用Global.asax的Application_BeginRequest 实现url 重写 无后缀
利用Global.asax的Application_BeginRequest 实现url 重写 无后缀 <%@ Application Language="C#" %> ...
- IOS 作业项目 TableView两个section中cell置顶功能实现
点击cell会置顶,其他的下移
随机推荐
- 66、fastJson 解析json数据时,如果key值不同怎么处理?
在某些场景,你可能需要定制序列化输出,比如说,希望序列化采用之后采用"ID",而不是"id",你可以使用@JSONField这个Annotation. publ ...
- leetcode 【 Reverse Words in a String 】python 实现
题目: Given an input string, reverse the string word by word. For example,Given s = "the sky is b ...
- ogre3D学习基础15 -- 创建BSP Scene Manager
BSP(binary-space partitioning) Scene Manager(二叉空间分割)场景管理器比较适合用于室内场景. 第一,添加框架代码如下 #include "Exam ...
- Strut 2 ValueStack传送带机制
源码与jar包下载(将rar改成jar,直接放在WEB_INF\lib目录中即可) 众所周知,Strut 2的Action类通过属性可以获得所有相关的值,如请求参数.Action配置参数.向其他 ...
- Hadoop入门第四篇:手动搭建自己的hadoop小集群
前言 好几天没有更新了,本来是应该先写HDFS的相关内容,但是考虑到HDFS是我们后面所有学习的基础,而我只是简单的了解了一下而已,后面准备好好整理HDFS再写这块.所以大家在阅读这篇文章之前,请先了 ...
- 无序字母对 character
无序字母对 character 题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入 ...
- IntelliJ IDEA 使用技巧一览表
IntelliJ IDEA使用技巧一览表 在使用 InelliJ IDEA 的过程中,通过查找资料以及一些自己的摸索,发现这个众多 Java 程序员喜欢的 IDE 里有许多值得一提的小窍门,如果能熟练 ...
- 微信小程序 body属性的问题
微信小程序里面没有了body这个节点了,取而代之的是page
- [01] radio ,checkbox 表单文字对齐
http://www.cnblogs.com/wangsir015/p/5555818.html 这几天在做表单时总会碰到复选框(checkbox)和单选框(radio)与文字不对齐的问题,要不是ch ...
- octave学习
前置安装 octave introduction 杂 clear; close all; clc刷新清空octave 如果写程序后缀名.m help commandname帮助 ;用法同c++ %注释 ...