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

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方法详解

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

    Django后端项目源码个人用

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

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

    为了将URL与视图关联起来,我们需要在项目的urls.py文件中定义路由规则: ```python from django.urls import path from . import views urlpatterns = [ path('comments/', views.list_comments, name='list_...

    Django网上书店项目.zip

    1. **Django项目结构**:Django项目通常包含`manage.py`(命令行工具)、`settings.py`(配置文件)、`urls.py`(URL路由配置)、`wsgi.py`(Web服务器网关接口)等核心文件,以及一个或多个包含应用程序的目录。...

    Django 反向生成url实例详解

    以上是通过给定文件内容总结出的Django反向生成URL的知识点,这些知识对于理解Django的URL系统至关重要,掌握了这些知识点,开发者可以在Django项目中更灵活地处理URL,提升项目的可维护性和扩展性。

    基于django的博客系统源码_python学习项目

    这个“基于django的博客系统源码”是一个适合初学者实践和提升技能的项目,它提供了完整的博客应用的实现。通过深入研究这个项目,我们可以了解Django框架的核心概念、MVC(Model-View-Controller)设计模式的应用...

    Python-django项目结构布局

    "Python-django项目结构布局"这个主题主要涉及如何组织和理解一个标准Django项目的文件结构。 一个典型的Django项目通常由以下几个核心部分组成: 1. **项目目录(Project Directory)**:这是整个Django项目的...

    python+django练手项目

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

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

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

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

    在本项目中,我们利用Django这一强大的Python Web框架,构建了一个实际的音乐网站,它具有侧边栏的隐藏式音乐播放器功能,同时具备分页和批量处理能力,以及吸引人的界面导航设计。这个项目不需要数据库,可以直接...

    PyPI 官网下载 | django-url-tools-0.0.4.zip

    4. **URL反向解析**:Django本身提供了`reverse()`函数,用于从视图名称获取URL。`django-url-tools`可能会扩展此功能,使其更加强大或易于使用。 5. **URL管理**:可能提供辅助方法来组织和管理多个URL模式,避免...

    Django python项目源码

    **Django Python 项目源码详解** Django 是一个高级的 Python Web 开发框架,它遵循模型-模板-视图(MTV)架构模式,旨在简化网页应用的开发过程,提供高效、可重用和“开箱即用”的功能。在本项目中,我们将深入...

    Django 2021年最新版教程-项目源码.zip

    【Django 2021年最新版教程-项目源码.zip】是一个包含Django框架最新教学项目的压缩包。这个项目可能旨在帮助初学者或中级开发者掌握Django的核心概念和实际应用。根据提供的标签,我们可以推测这个教程是针对Django...

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

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

    python django 自搭项目供学习.zip

    - **项目文件结构**:Django项目通常有一个顶级目录,包含`manage.py`脚本、`settings.py`(配置文件)、`urls.py`(URL配置)、`wsgi.py`(用于部署)和其他相关文件。 - **应用**:项目下可能有多个应用,每个应用...

    Django读取Mysql数据并显示在前端的实例

    首先,我们需要在Django项目中设置MySQL数据库。在`settings.py`文件中,你需要更改或添加`DATABASES`配置,确保它指向你的MySQL数据库: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends....

    django基础教程

    1. **项目**:Django项目是包含多个应用的整体结构,定义了全局配置,如数据库设置、中间件和URL路由。 2. **应用**:应用是项目中的独立模块,专注于特定功能,如用户认证、博客管理等。每个应用都有自己的模型、...

    千峰Django.7z

    - **URL路由**: Django提供简洁的URL配置,可以将URL映射到视图函数,实现灵活的URL设计。 - **表单处理**: Django的Form类可以方便地处理HTTP请求中的数据,验证用户输入,并将其绑定到模型或直接在视图中使用。 ...

    django中url映射规则和服务端响应顺序的实现

    - **URL映射文件**:通过`ROOT_URLCONF`变量指定的文件来获取URL映射关系。 - **模板路径**:通过`TEMPLATE_DIRS`变量指定模板文件的位置。 2. **处理请求**:当用户向服务器发送请求时,Django会根据URL映射...

Global site tag (gtag.js) - Google Analytics