文档章节

django快速获取项目所有的URL

l
 lykops
发布于 2017/08/04 09:04
字数 304
阅读 3
收藏 0

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'

本文转载自:http://blog.csdn.net/liyingke112/article/details/54133726

l
粉丝 2
博文 297
码字总数 7445
作品 2
深圳
运维
私信 提问
Django快速搭建Blog

创建工程 创建mysite工程项目: D:/djpy> django-admin.exe startproject mysite 工程目录结构: manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。 settings...

帅旗军
2017/03/13
0
0
Django 学习笔记 1.1 创建第一个项目

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/iotisan/article/details/96006690 文章目录 前言 https://docs.dja...

iotisan
07/15
0
0
详解Django的CSRF认证

1.csrf原理 2.Django中的CSRF中间件 首先,我们知道Django中间件作用于整个项目。 在一个项目中,如果想对全局所有视图函数或视图类起作用时,就可以在中间件中实现,比如想实现用户登录判断...

任平生78
2018/10/08
0
0
Python Web 应用程序 Django 框架简介

在这个比较 Python 框架的最后一篇中,让我们看看 Django。 在本系列(由四部分组成)的前三篇文章中,我们讨论了 Pyramid、Flask 和 Tornado 这 3 个 Web 框架。我们已经构建了三次相同的应...

作者: Nicholas Hunt-walker
2018/11/30
0
0
整合 Django + Vue.js 框架快速搭建web项目

在这篇文章中: 一、 背景 二、 环境准备 三、 构建Django项目 四、 构建Vue.js前端项目 五、 整合Django和Vue.js 六、 部署 七、 其他 一、 背景 在工作中我们经常须要构件一些基于web的项目...

.╂遊牧
2017/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

zk中leader和follower启动时信息交互

QuorumPeer中读取节点状态信息,不同状态下设置不同角色 1 Leader启动Follower接收器LearnerCnxAcceptor LearnerCnxAcceptor负责接收非leader连接请求,线程中创建LearnerHandler处理器 2 Le...

writeademo
27分钟前
4
0
完美的Linux之【navi】使用笔记

今天要说的是才上线才两天,就已经获得超过1000星。开发者是一位来自巴西的小哥Denis Isidoro。 开发的工具navi Linux用户的日常困惑 > 新命令 用完就忘 ? > 一时想不起来命令的单词怎么拼?...

我们都很努力着
29分钟前
3
0
iptables删除命令中的相关问题

最近在做一个V**N中间件的配置工作,在配置iptables的时候,当用户想删除EIP(即释放当前连接),发现使用iptables的相关命令会提示错误。iptables: Bad rule (does a matching rule exist ...

Linux就该这么学
41分钟前
3
0
ExtJS 4.2 评分组件

本文转载于:专业的前端网站➸ExtJS 4.2 评分组件 上一文章是扩展ExtJS自带的Date组件。在这里将创建一个评分组件。 目录 1. 介绍 2. 示例 3. 资源下载 1. 介绍 代码参考的是 Sencha Touch 2...

前端老手
49分钟前
4
0
springboot2.0.6启动解析(四)观察器、启动的错报告、Headless模式相关分析

解析SpringApplication的run方法观察器、启动的错报告、Headless模式、监听器相关分析 public ConfigurableApplicationContext run(String... args) { // 构造一个任务执行观察器(Jav...

小亮89
56分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部