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第三方库


热门话题
java如何在导入到Google工作表时使用ApachePOI显示系列标签   java在Swing表上修改数据生成SQL   java TCP数据包在网络级别合并   java自动连线bean在线程位置为空   javasocket。禁用无线连接时getOutputStream()阻塞   JSON上的javascript字符串数组。stringify输出unicode字符   java在Oracle数据库中存储不同类型数据的最佳体验   Spring MVC中模板引擎后的java进程输出   不知从哪里来的java空字符串。   如何加载java。使用Adobe Flex的客户端的属性文件?   java如何替换多层括号之间的所有内容?   {JSONObject必须以java'开头   java使用commandButton或commandLink返回并管理HTML控件值   java Android大文本视图动态   java JMock需要自定义类   java Android应用程序在emulator中工作,但在设备中失败   java连接到derby数据库时使用什么文件路径格式?   java在一个函数调用中返回两个结果?