grok应用程序的url模式

megrok.trails的Python项目详细描述


穴居人经常沿着动物的足迹在森林中猎杀。 他们也可以沿着小路去寻找重要的自然资源。 第一次人类迁徙可能是沿着 参观天然盐矿时产生的动物群。

在相同的传统中,trails产品提供了python 包megrok.trails,允许grok网站开发人员定义 Web用户可以访问漫游对象的URL 他们的地盘。

如果您需要报告错误或请求功能,请访问 项目的启动板站点:

https://launchpad.net/megrok.trails

trails创建两个遍历器,使url在forward中工作 方向(这样用户可以访问它们并看到正确的对象) 还注册要生成的url所需的适配器(意味着 那个怪人会问“这个对象在哪个url上?“并接受 回复)。

轨迹在使用时看起来像这样:

class MyTrails(megrok.trails.TrailHead):
    grok.context(MyApp)
    trails = [
        Trail('/person/:id', Person),
        Trail('/account/:username', Account),
        ]

上面的示例使url类似于:

http://example.com/app/person/3096

遍历通过调用Person(id=3096)创建的对象,而 访问url的用户:

http://example.com/app/account/dcr

将找到通过调用Account(username=dcr)创建的对象。在 每种情况下,trail中以冒号为前缀的url元素都成为关键字 传递给作为第二个给定的类(或其他可调用的类)的参数 Trail()的参数。每个没有前缀的url元素 冒号必须与 提交的URL。

TrailHead对您命名为其对象的对象执行遍历 grok.context(),因此不必定义traverse()方法 或者自己为该上下文创建一个grok.Traverser。当 剩余的url组件无法匹配任何Trail模式 如果从TrailHead开始,则会引发一个错误,该错误应返回 404 Not Found给用户(当然,除非只有一个 url组件左边,它命名一个视图)。相反,如果 模式匹配,然后在 Trail用冒号前缀的通配符url实例化 作为关键字参数提供的组件,如上所述。

一旦轨迹被匹配并解析为一个对象,轨迹就是 完成处理,然后正常的grok遍历将再次接管 处理任何剩余的url组件,或查找 如果已到达URL的结尾,则返回对象。所以,在上面 例如,开发人员需要提供普通的grok.View 为用户排序的PersonAccount对象的类 在浏览器中查看它们的渲染。这意味着轨迹不是 类似于Rails RoutesPython Routes, 因为这些产品都有自己的选择视图的方法 放在物体上。相比之下,小径 为如何选择视图并将其放置在 对象;它只是试图使对象遍历本身更干净 在对象和容器不在的应用程序中更易于维护 在像ZODB这样的对象数据库中确实存在。

注意,一旦任何Trail被 完成,并将控制权返回给grok。因此,你不能有两个 一个是另一个前缀的工作轨迹;第二个Trail 此处显示的内容将永远不会使用:

trails = [
    Trail('/person/:id', Person),
    Trail('/person/:id/:acct', BankAccount), # will never be used!
    ]

记住,trails也会注册适配器,告诉grok每个适配器的位置 对象的类型,例如,如果您正在呈现一个页面 作为搜索结果的一部分,满是Person对象,然后可以调用 view.url(person)在每个路径上,trails将为 它们的构造如下:

application_url + '/person/%s' % person.id

如果你的足迹说了些更有野心的话,比如:

Trail('/town/:name/:state', Town)

然后,任何特定城镇的url都将通过计算形成:

application_url + '/town/%s/%s' % (town.name, town.state)

看起来像/town/Springfield/MA。注意这意味着 trails对您命名为 Trail的第二个参数:第一个,它可以安全地调用 类似于冒号前缀通配符的关键字参数 url模式;其次,该类型的任何活动对象都将 具有与这两个名称相同的属性,它可以查找这些属性以形成 对象的URL。

请访问我们的项目页面(链接位于本自述文件顶部附近) 如果您有任何建议、错误报告或有关跟踪的问题。 享受吧!

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

推荐PyPI第三方库


热门话题
使用MongoDB进行java漏斗分析?   java如何重构此代码以仅执行一次方法logViolation(),并在单个字符串中获取字符串变量(speedType)的所有值   java如何将方向向量转换为角度?   Java中json文件中的股票价格   java有没有一种方法可以查看网站中的哪些资源加载了selenium?   java文件定位器可以指向不同文件服务器上的目录吗?   java GWT等待SetVisibleRange和ClearData完成   macos Java Applet无法在Mac OS下接收鼠标输入   java BottomNavigationView不支持单次单击必须单击两次   MS SQL Server 2012中的java:我的数据库名称是J.3.0.0\u DEV我无法在Oracle SQL Developer IDE中连接它?   java对JFileChooser的修改,只显示文件夹内容   java如何将动态对象查询更改为criteria builder或更好的性能   java中的swing新字体类型   java Hibernate。删除未使用的条目   上载CSV文件并将其转换为Java模型对象   java如何将信息添加到库的日志消息中?   JavaEclipseGit:使用egit从另一个分支、标记或引用打开版本   使用Firebase控制台消息的java开放视频