您的位置:首页 > 编程语言 > Python开发

python routes

2016-01-09 23:22 543 查看

routes是用python重新实现的Rails routes系统,用来映射url与应用程序的系统------路由寻找及url生成。

例子:

from routes import Mapper
map = Mapper()
map.connect(None, "/error/{action}/{id}", controller="error")
map.connect("home", "/", controller="main", action="index")
map.connect('/{controller}/{action}')
map.connect('/{controller}/{action}/{id}')

第1、2行:创建一个mapper。

第3行:匹配一个三分量的路由-以“/error”开始,定义controller为error。因此一个url“/error/images/arrow.jpg”将产生。

第4行:匹配一个单一的“/”url。定义controller and action分别为main、index。route的名字为home。

第5、6行:分别匹配任何两分量和三分量的url

假若不想为每一个action定义一个路由,可以采用第5、6行方式定义route。

定义一个正在匹配url(只能匹配/blog/123 不能匹配/blog/123A)

map.connect("/blog/{id}", requirements={"id": R"\d+"})

map.connect("/download/{platform}/{filename}", requirements={"platform": R"windows|mac"})

条件Conditions 路由:Conditions 字典可以最多具有三个key:method、sub_domain、function

m.connect("/user/list", controller="user", action="list", conditions=dict(method=["GET", "HEAD"]))

RESTful services

以下语句:

map.resource("message", "messages")

等同于:

map.connect("messages", "/messages",
controller="messages", action="create",
conditions=dict(method=["POST"]))
map.connect("messages", "/messages",
controller="messages", action="index",
conditions=dict(method=["GET"]))
map.connect("formatted_messages", "/messages.{format}",
controller="messages", action="index",
conditions=dict(method=["GET"]))
map.connect("new_message", "/messages/new",
controller="messages", action="new",
conditions=dict(method=["GET"]))
map.connect("formatted_new_message", "/messages/new.{format}",
controller="messages", action="new",
conditions=dict(method=["GET"]))
map.connect("/messages/{id}",
controller="messages", action="update",
conditions=dict(method=["PUT"]))
map.connect("/messages/{id}",
controller="messages", action="delete",
conditions=dict(method=["DELETE"]))
map.connect("edit_message", "/messages/{id}/edit",
controller="messages", action="edit",
conditions=dict(method=["GET"]))
map.connect("formatted_edit_message", "/messages/{id}.{format}/edit",
controller="messages", action="edit",
conditions=dict(method=["GET"]))
map.connect("message", "/messages/{id}",
controller="messages", action="show",
conditions=dict(method=["GET"]))
map.connect("formatted_message", "/messages/{id}.{format}",
controller="messages", action="show",
conditions=dict(method=["GET"]))


实现了以下RESTful接口功
4000
能:

GET    /messages        => messages.index()    => url("messages")

POST   /messages        => messages.create()   => url("messages")

GET    /messages/new    => messages.new()      => url("new_message")

PUT    /messages/1      => messages.update(id) => url("message", id=1)

DELETE /messages/1      => messages.delete(id) => url("message", id=1)

GET    /messages/1      => messages.show(id)   => url("message", id=1)

GET    /messages/1/edit => messages.edit(id)   => url("edit_message", id=1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: