美文网首页璃木Django基础学习Python 运维程序员
为django开发一套动态的路由系统

为django开发一套动态的路由系统

作者: 靖小侠 | 来源:发表于2017-02-23 13:48 被阅读118次

一、最基础的url映射

urls.py:

1 from django.conf.urls import include, url

2 from django.contrib import admin

3 from app01 import views

4

5 urlpatterns = [

6    url(r'^admin/', admin.site.urls),

7    url(r'^index/$', views.index),

8   ]

1、先从创建的app下的views.py面定义处理数据的函数

2、在urls.py里导入views

3、在urlpatterns里写入一条url与处理函数的l映射关系

4、url映射一般是一条正则表达式,“^” 字符串的开始,“$“ 字符串的结束

5、当写成”^$“时,不输入任何url时不会在返回黄页,而是返回后面函数里对应的页面。一般这一条会写在url的最后。如:

1 url(r'^$', views.index),

二、通过反射机制,为django开发一套动态的路由系统

在urls.py里定义分类正则表达式:

from django.conf.urls import patterns, include, urlfrom django.contrib import adminfrom DynamicRouter.activator import processurlpatterns = patterns('', # Examples: # url(r'^$', 'DynamicRouter.views.home', name='home'), # url(r'^blog/', include('blog.urls')),url(r'^admin/', include(admin.site.urls)),  ('^(?P(\w+))/(?P(\w+))/(?P(\d+))/(?P(\d+))/$',process), ('^(?P(\w+))/(?P(\w+))/(?P(\d+))/$',process), ('^(?P(\w+))/(?P(\w+))/$',process), ('^(?P(\w+))/$',process,{'function':'index'}),)

在同目录下创建activater.py:

#!/usr/bin/env python

#coding:utf-8

from django.shortcuts import render_to_response,HttpResponse,redirect

def process(request,**kwargs):

'''接收所有匹配url的请求,根据请求url中的参数,通过反射动态指定view中的方法'''

app = kwargs.get('app',None)

function = kwargs.get('function',None)

try:

appObj = __import__("%s.views" %app)

viewObj = getattr(appObj, 'views')

funcObj = getattr(viewObj, function)

#执行view.py中的函数,并获取其返回值

result = funcObj(request,kwargs)

except (ImportError,AttributeError),e:

#导入失败时,自定义404错误

return HttpResponse('404 Not Found')

except Exception,e:

#代码执行异常时,自动跳转到指定页面

return redirect('/app01/index/')

return result

原文链接

相关文章

  • 为django开发一套动态的路由系统

    一、最基础的url映射 urls.py: 1 from django.conf.urls import inclu...

  • vue实现动态路由 前端控制

    公司最近重构之前的老项目,后台管理系统需要实现动态路由。 为什么要实现动态路由? 我们在开发后台管理系统的过程中,...

  • rest_framework 路由器

    rest_framework的路由器是为django的路由系统服务的,不使用rest_framework的路由器我...

  • 人脑路由系统

    服务器有一套路由系统 来决定不同情况下由哪个服务来处理请求 Python Django Node express ...

  • 4.Django路由系统

    Django路由系统 URL调度器Django 允许自由地设计你的URL,不受框架束缚。Django认为,对于高质...

  • eNSP模拟实验-OSPF开销值、协议优先级及计时器

    由于路由器上可能同时运行多种动态路由协议,就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置...

  • Django路由系统

    python django官方文档地址:https://docs.djangoproject.com/zh-han...

  • Django路由系统

    1.url是全球统一资源定位符 2.django的路由系统当一个请求来到时1.首先到项目目录下的urls.py (...

  • Django路由系统

    路由系统 获取url上的参数 路径参数(简书) 路径参数的使用 自定义路径参数 re_path 渲染模板 配置模板...

  • 09、vue3动态路由搭建

    1、为什么需要动态路由? 一般开发都是写静态路由,我们为什么要使用动态路由呢?因为动态路由对权限的划分是一个最有效...

网友评论

    本文标题:为django开发一套动态的路由系统

    本文链接:https://www.haomeiwen.com/subject/jscbwttx.html