基于路径的涡轮齿轮2调度

tgext.routes的Python项目详细描述


关于tgext.routes

https://travis-ci.org/TurboGears/tgext.routes.pnghttps://coveralls.io/repos/TurboGears/tgext.routes/badge.pnghttps://img.shields.io/:license-mit-blue.svg?style=flat-square

routes提供了一种集成基于路由的调度的简单方法 应用于涡轮齿轮2。

安装

tgext.routes既可以从pypi安装,也可以从bitbucket安装:

pip install tgext.routes

应该只对大多数用户有效

路由单个操作

路由匹配是通过@routedecorator完成的, 每个公开的方法可以绑定到一个或多个路由。

唯一的要求是从RoutedController实例继承。

通过@routedecorator注册的所有路由都是从 从控制器安装点。

下面的示例为如下URL注册entry_by_date方法 /date/2012-01/date/2012-01-01

from tgext.routes import RoutedController, route

class DateController(RoutedController):
    @expose()
    @route('{year}-{month}', day=33)
    @route('{year}-{month}-{day}')
    def entry_by_date(self, year, month, day):
        return '%s ++ %s ++ %s' % (year, month, day)

class RootController(BaseController):
    date = DateController()

    @expose()
    def index(self):
        return 'Hello!'

请记住,当@expose包装它时,方法仍然是 可通过objectdispatch路由访问,@route 注册其他路由。

如果有指向它的路由,也可以使用不提供 解决了@expose装饰,请记住在这种情况下 必须手动渲染模板。

如果要禁用objectdispatch可以设置disable_objectdispatch=True 在控制器内部。请记住,它将为 整个控制器,因此您将无法分派不提供 从那个控制器开始的路线。

路由整个应用程序

RoutedController也可以作为应用程序rootcontroller安装。 在这种情况下,您甚至可以提供 一个routes.Mapper对象作为控制器mapper属性和寄存器 应用程序的所有路径:

class RootController(RoutedController):
    mapper = Mapper()
    mapper.connect('/', controller='home', action='index')
    mapper.connect('/json', controller='home', action='jsonexposed')
    mapper.connect('/unex', controller='home', action='unexposed')

在这种情况下,需要controller参数,并且将查找控制器 在由tg.config['paths']['controllers']指定的路径内。在上一个 示例HomeController类将在home.py模块中查找 提供//json/unex路径,它们通过indexjsonexposedunexposed方法。

如果mapper属性和@route装饰符都在同一个内部使用 RoutedController,在映射器路由之后应用@route装饰器。

有关路由的更多文档,请参阅Routes Documentation

继续使用objectdispatch

当使用tgext.routes作为主要路由方法时,可以告诉 它将继续使用objectdispatch(或提供的任何特定的分派方法 由目标控制器)使用调度作为路由的操作。

默认情况下,当路由完全匹配时,提供一个调度操作 不提供余数,因此它将只发送到目标控制器的index方法。 要继续使用url的剩余部分进行调度,可以使用 调度标签:

mapper.connect('/forsub{_dispatch:.*?}', controller='home',  action='_dispatch')

这将发送到homecontroller继续对任何对象进行objectdispatch 它出现在url的/forsub部分之后。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Scanner对象作为构造函数参数传递给UserInterface类   spring未能启动bean“subtocolWebSocketHandler”;嵌套的例外是java。lang.IllegalArgumentException:没有处理程序   Java EE应用程序中后台服务的多线程Java线程(设置守护进程和优先级)?   java Pull to refresh返回列表的第一个位置   无法将comparator类转换为java。可比的   java将json从servlet传递到dojo   JavaHibernate:将子类实例转换为超类实例   java警告调用servlet类时非法反射访问   java静态变量值   java@Entity和@embeddeble之间有什么区别   java将作业配置导入公共作业配置类(注释配置)   sql公共表表达式(以values语句开头)在java中给出错误   java在ImageJ中使用ImageProcessor   java PostgreSQL executeBatch()会随着时间的推移而变慢   java在安卓中以表格形式排列sqllite表数据?   java中SVG的swing定制呈现   java删除与另一个实体映射的实体   java何时/如何添加ListView适配器,使用back按钮恢复它?(片段)   java为什么IBinder和Binder之间的类型转换不是非法的?   java在方法参数列表中使用ArrayList或List