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'
分享到:
相关推荐
这种方法可以帮助开发者快速获取项目的所有URL,便于进行全局的操作,比如权限控制、日志记录或者自定义错误页面。在实际应用中,可以依据此方法进行扩展,例如添加过滤器来忽略某些特定的URL,或者将URL映射到对应...
【Django后端项目源码个人用】是一个与Python Web开发相关的项目,主要基于Django框架构建。Django是Python中最流行的Web开发框架之一,它提供了MVC(模型-视图-控制器)架构,用于快速开发安全且可维护的网站。这个...
为了将URL与视图关联起来,我们需要在项目的urls.py文件中定义路由规则: ```python from django.urls import path from . import views urlpatterns = [ path('comments/', views.list_comments, name='list_...
1. **Django项目结构**:Django项目通常包含`manage.py`(命令行工具)、`settings.py`(配置文件)、`urls.py`(URL路由配置)、`wsgi.py`(Web服务器网关接口)等核心文件,以及一个或多个包含应用程序的目录。...
以上是通过给定文件内容总结出的Django反向生成URL的知识点,这些知识对于理解Django的URL系统至关重要,掌握了这些知识点,开发者可以在Django项目中更灵活地处理URL,提升项目的可维护性和扩展性。
这个“基于django的博客系统源码”是一个适合初学者实践和提升技能的项目,它提供了完整的博客应用的实现。通过深入研究这个项目,我们可以了解Django框架的核心概念、MVC(Model-View-Controller)设计模式的应用...
"Python-django项目结构布局"这个主题主要涉及如何组织和理解一个标准Django项目的文件结构。 一个典型的Django项目通常由以下几个核心部分组成: 1. **项目目录(Project Directory)**:这是整个Django项目的...
在这个“python+django练手项目”中,我们主要关注如何利用Django框架来实现一个Web项目,这包括理解Django的MVT(Model-View-Template)设计模式,以及如何通过Django的后台管理系统进行数据操作和信息展示。...
- `simple-django-master`:这个目录可能是项目的主应用,包含`models.py`(数据模型)、`views.py`(视图函数)、`urls.py`(URL配置)以及可能的`templates`和`static`目录。 3. **数据模型(Models)** 在`...
在本项目中,我们利用Django这一强大的Python Web框架,构建了一个实际的音乐网站,它具有侧边栏的隐藏式音乐播放器功能,同时具备分页和批量处理能力,以及吸引人的界面导航设计。这个项目不需要数据库,可以直接...
4. **URL反向解析**:Django本身提供了`reverse()`函数,用于从视图名称获取URL。`django-url-tools`可能会扩展此功能,使其更加强大或易于使用。 5. **URL管理**:可能提供辅助方法来组织和管理多个URL模式,避免...
**Django Python 项目源码详解** Django 是一个高级的 Python Web 开发框架,它遵循模型-模板-视图(MTV)架构模式,旨在简化网页应用的开发过程,提供高效、可重用和“开箱即用”的功能。在本项目中,我们将深入...
【Django 2021年最新版教程-项目源码.zip】是一个包含Django框架最新教学项目的压缩包。这个项目可能旨在帮助初学者或中级开发者掌握Django的核心概念和实际应用。根据提供的标签,我们可以推测这个教程是针对Django...
它涵盖了从基础到高级的Django应用开发,旨在帮助读者快速掌握Django并能够实际应用到项目中。源码包包含了第一版和第二版的实践项目,是理论与实践结合的宝贵资源。 在Django实战的源码中,你可以学到以下几个重要...
- **项目文件结构**:Django项目通常有一个顶级目录,包含`manage.py`脚本、`settings.py`(配置文件)、`urls.py`(URL配置)、`wsgi.py`(用于部署)和其他相关文件。 - **应用**:项目下可能有多个应用,每个应用...
首先,我们需要在Django项目中设置MySQL数据库。在`settings.py`文件中,你需要更改或添加`DATABASES`配置,确保它指向你的MySQL数据库: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends....
1. **项目**:Django项目是包含多个应用的整体结构,定义了全局配置,如数据库设置、中间件和URL路由。 2. **应用**:应用是项目中的独立模块,专注于特定功能,如用户认证、博客管理等。每个应用都有自己的模型、...
- **URL路由**: Django提供简洁的URL配置,可以将URL映射到视图函数,实现灵活的URL设计。 - **表单处理**: Django的Form类可以方便地处理HTTP请求中的数据,验证用户输入,并将其绑定到模型或直接在视图中使用。 ...
- **URL映射文件**:通过`ROOT_URLCONF`变量指定的文件来获取URL映射关系。 - **模板路径**:通过`TEMPLATE_DIRS`变量指定模板文件的位置。 2. **处理请求**:当用户向服务器发送请求时,Django会根据URL映射...