python route 知识总结

本文详细介绍了Python中route的使用,包括Mapper().connect和Mapper().match方法,以及route.middleware和Mapper.resource。通过分析cinder 2013.1版代码,讲解了webob.dec.wsgify装饰器的作用,routes.middleware.RoutesMiddleware如何处理URL路由,并探讨了map.connect和map.resource的各种匹配条件,包括HTTP方法、资源命名和路径前缀。同时,提到了resource中controller对象的特殊要求以及存在的疑问待进一步研究。
摘要由CSDN通过智能技术生成

route 可以从url提取相应的参数,如controller,action或者其它用户自己定义的变量


1.Mapper().connect    Mapper().match

from routes import Mapper
map = Mapper()
map.connect(None,"error/{action}/{id}",controller="controller_obj") #定义匹配规则
result = map.match('error/myapp/4')  #匹配url='error/myapp/4'
#result 匹配结果
{'action': u'myapp', 'controller': u'controller_obj', 'id': u'4'}
map.connect(None,"/message/:name",controller='my_contro')  #除 {} 外,:也可以作为匹配符号
result = map.match('/message/12')
#result 匹配结果
{'controller': u'my_contro', 'name': u'12'}


2.route.middleware以及Mapper.resource

参照cinder 2013.1版代码写的

#!/usr/bin/env/python
#coding=utf-8
from routes import Mapper
from routes import middleware
import webob.dec
from wsgiref.simple_server import make_server

class controller(object):
    def __init__(self):
        self.i = 1
    def __call__(self):
        print self.i
    def search(self):
        return "do search()"
    def show(self):
        return "do show()"
    def index(self):
        return "do index()"
    def update(self):
        return "do update()"
    def delete(self):
        return "do delete()"
    def create(self):
        return "do create()"
    def create_many(self):
        return "do create_many()"
    def update_many(self):
        return "do update_many()"
    def list_many(self):
        return "do list_many()"
    def delete_many(self):
        return "do delete_many()"
class appclass(object):

    def __init__(self):
        a = controller()
        map = Mapper()
        """路由匹配条件1"""
        #map.connect('/images',controller=a,
        #           action='search',
        #           conditions={'method':['GET']})
        """路由匹配条件2"""
        #map.connect('name',"/{action}/{pid}",controller=a)
        """路由匹配条件3"""
        #map.resource("message","messages",controller=a,collection={'search':'GET'})
        """路由匹配条件4"""
        #map.resource('message', 'messages',controller=a,
                        #collection={'list_many':'GET','create_many':'POST'},
                        #member={'update_many':'POST','delete_many':'POST'})
       
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值