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

一、最基础的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 1.7.1及以上 用以下命令 1....
    夏天夏星阅读 5,744评论 0 17
  • 已经同步到gitbook,想阅读的请转到gitbook: Django 1.10 中文文档 URL dispatc...
    leyu阅读 14,267评论 0 16
  • 关于JET是新式的Django管理界面并且增强了功能。 内容 文档 开始 安装django-jet 安装仪表盘...
    CNSumi阅读 7,945评论 2 15
  • 经过对django的初步学习,我们已经对后台的基本流程以及django的运作有了一定的了解,但是这还不足够,dja...
    coder_ben阅读 3,861评论 8 34
  • 此段内容简要来自自强学堂的教程详情请查询自强学堂 一、 后台的运作流程 接收request请求 处理数据 获取请求...
    coder_ben阅读 5,260评论 6 56