`
lykops
  • 浏览: 86119 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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'
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    获取Django项目的全部url方法详解

    这种方法可以帮助开发者快速获取项目的所有URL,便于进行全局的操作,比如权限控制、日志记录或者自定义错误页面。在实际应用中,可以依据此方法进行扩展,例如添加过滤器来忽略某些特定的URL,或者将URL映射到对应...

    基于Django快速开发网络留言板应用

    【标题】:基于Django快速开发网络留言板应用 在Python Web开发领域,Django是一个非常流行和强大的框架,它提供了一种高效、简洁且实用的方式来构建动态网站。本教程将带你深入理解如何利用Django来创建一个功能...

    python+django练手项目

    在这个“python+django练手项目”中,我们主要关注如何利用Django框架来实现一个Web项目,这包括理解Django的MVT(Model-View-Template)设计模式,以及如何通过Django的后台管理系统进行数据操作和信息展示。...

    Django 快速实战入门代码压缩包

    **Django快速实战入门代码压缩包详解** 这个压缩包包含了学习Django框架进行快速实战入门所需的基本文件。Django是Python编程语言中的一个强大且功能丰富的Web开发框架,以其MVC(模型-视图-控制器)架构模式和“ ...

    Django后端项目源码个人用

    【Django后端项目源码个人用】是一个与Python Web开发相关的项目,主要基于Django框架构建。Django是Python中最流行的Web开发框架之一,它提供了MVC(模型-视图-控制器)架构,用于快速开发安全且可维护的网站。这个...

    我如何使用 Django + Vue.js 快速构建项目.pdf

    Django的URL配置(URLconf)保留下来用于处理前端路由的父级路由,使得前端可以使用Vue.js提供的路由机制独立开发页面。 4. 实操指南:文档应该介绍了如何一步步创建Django项目和Vue.js项目,包括如何配置Webpack...

    django项目实战一个音乐网站的实现(侧边音乐播放器)

    这个项目不需要数据库,可以直接运行,使得开发者能够快速体验和理解其工作原理。 首先,我们需要了解Django的基础知识。Django是一个高级的Web框架,它遵循模型-视图-控制器(MVC)架构模式,提供了一整套用于创建...

    python django 自搭项目供学习.zip

    Python Django 是一个强大的开源Web框架,它基于模型-视图-控制器(MVC)设计模式,用Python语言编写,用于快速开发高效、可维护的网站应用程序。本项目旨在提供一个自搭Django项目的实例,帮助学习者深入理解Django...

    基于Django快速开发Web应用

    **基于Django快速开发Web应用** Django是一个高级的Python Web框架,它鼓励快速开发和实用主义...通过阅读《基于Django快速开发Web应用.pdf》和参考《说明.txt》,你将更深入地理解如何利用Django来构建你的Web项目。

    django管理系统项目

    4. **URL配置**:Django的URL路由系统允许开发者将URL映射到特定的视图函数,使得每个URL都能触发对应的功能。 5. **表单处理**:Django提供了强大的表单处理机制,包括自动生成HTML表单、验证用户输入和处理表单...

    Django 反向生成url实例详解

    2. 在Python代码中使用reverse方法:在视图函数或其他Python代码中,可以通过django.core.urlresolvers模块下的reverse函数来获取URL。reverse函数接受一个视图名称以及一些参数作为输入,并返回一个字符串形式的URL...

    Django 快速实战入门.doc

    【Django快速实战入门】 Django是一个基于Python的高级Web开发框架,因其高效、简洁和功能强大而备受开发者喜爱。它的出现解决了Python在Web开发中的一些效率问题,使得开发过程更为有序和高效。Django的核心组件...

    最简单的Python Django入门教程.pdf

    用户通过浏览器发送请求,Django解析URL,找到对应的视图函数,视图处理请求并可能与模型交互获取数据,然后使用模板生成响应,最后返回给用户。整个过程中,Django自动处理了HTTP请求和响应的生命周期。 **应用...

    bookporject(1).rar (django夏季小项目)

    "小项目" 暗示这可能是一个相对较小规模、适合初学者或者快速上手的练习,旨在帮助开发者通过实践理解 Django 的工作流程。 【压缩包子文件的文件名称列表】"bookporject" 代表了项目的根目录。在 Django 项目中,...

    《Python Django快速入门》系列博客的项目源码-Django-Quick-Start.zip

    【Python Django快速入门】系列博客项目源码是一个适合初学者的教程资源,旨在帮助学习者快速掌握Django框架的基本概念和应用。这个压缩包包含了名为"Django-Quick-Start-master"的完整项目文件,让我们来深入探讨这...

    《Django实战》源码(第一、第二版) .zip

    它涵盖了从基础到高级的Django应用开发,旨在帮助读者快速掌握Django并能够实际应用到项目中。源码包包含了第一版和第二版的实践项目,是理论与实践结合的宝贵资源。 在Django实战的源码中,你可以学到以下几个重要...

    django入门项目源码含数据库,一个简单的django项目

    - `simple-django-master`:这个目录可能是项目的主应用,包含`models.py`(数据模型)、`views.py`(视图函数)、`urls.py`(URL配置)以及可能的`templates`和`static`目录。 3. **数据模型(Models)** 在`...

    Python3.5,django1.10实用例子2

    1. **Django 1.10**:Django是一个高级的Python Web框架,它鼓励快速开发和清洁、实用的设计。在Django 1.10版本中,我们能够利用其强大的模板引擎、ORM(对象关系映射)、URL路由系统和内置的管理界面。这个项目...

Global site tag (gtag.js) - Google Analytics