Python路由-I';我试图设置格式扩展名,但它';他失败了

Python路由-I';我试图设置格式扩展名,但它';他失败了,python,routes,pylons,Python,Routes,Pylons,我正在尝试设置我的路由并启用可选的“格式”扩展,以指定该页面应作为标准HTML页面加载还是在lightbox中加载 接下来,我想到了: map.connect('/info/test{.format:lightbox}', controller='front', action='test') class FrontController(BaseController): def test(self, format='html'): print format 这是失败的。

我正在尝试设置我的路由并启用可选的“格式”扩展,以指定该页面应作为标准HTML页面加载还是在lightbox中加载

接下来,我想到了:

map.connect('/info/test{.format:lightbox}', controller='front', action='test')

class FrontController(BaseController):
    def test(self, format='html'):
        print format
这是失败的。我的路线出错,URL显示为
/front/test
,而不是
/info/test
。它返回到
/{controller}/{action}

如何允许格式扩展?:/

一般来说:

Routes然后从上到下搜索route map中的每个路由,直到找到与URL匹配的路由。因为匹配是从上到下进行的,所以建议您始终将自定义路由放在挂架提供的路由之下,以确保不会意外干扰挂架的默认行为。更一般地说,您应该始终将最普通的路线放在路线图的底部,这样它们就不会意外地在路线图较低位置的更具体路线之前匹配

一般来说:

Routes然后从上到下搜索route map中的每个路由,直到找到与URL匹配的路由。因为匹配是从上到下进行的,所以建议您始终将自定义路由放在挂架提供的路由之下,以确保不会意外干扰挂架的默认行为。更一般地说,您应该始终将最普通的路线放在路线图的底部,这样它们就不会意外地在路线图较低位置的更具体路线之前匹配


我要检查的第一件事是你使用的是路线1.12。有几个发行版仍然在1.11上,它不支持格式扩展


其次,检查路线的定义顺序。这很重要。

我要检查的第一件事是您使用的是routes 1.12。有几个发行版仍然在1.11上,它不支持格式扩展


其次,检查路线的定义顺序。这很重要。

我使用的是1.12.3版。接下来,我的路线介于预定义的
错误
常规
路线之间。在这种情况下,我的建议是开始缩小问题的范围。您是否尝试过注释
/{controller}/{action}
路由并删除URL的
{.format:lightbox}
部分,以确认它在没有扩展说明符的情况下按预期工作?如果删除格式扩展,则所有路由都按预期工作。有几个不同的映射到不同的控制器/动作,它们都工作得很好。当我添加格式扩展时,这一条路由中断。我不知道我是否把实际的路由搞砸了,或者,我假设,该格式将如何传递给控制器(操作中的
format
参数)。您是否尝试过
{.format}
,看看问题是否出在过滤器上?如果是这样的话,试着把它做成一个命名的路由,并用它生成一个URL,看看路由认为它应该是什么。接下来,我的路线介于预定义的
错误
常规
路线之间。在这种情况下,我的建议是开始缩小问题的范围。您是否尝试过注释
/{controller}/{action}
路由并删除URL的
{.format:lightbox}
部分,以确认它在没有扩展说明符的情况下按预期工作?如果删除格式扩展,则所有路由都按预期工作。有几个不同的映射到不同的控制器/动作,它们都工作得很好。当我添加格式扩展时,这一条路由中断。我不知道我是否把实际的路由搞砸了,或者,我假设,该格式将如何传递给控制器(操作中的
format
参数)。您是否尝试过
{.format}
,看看问题是否出在过滤器上?如果是这样的话,试着把它做成一个命名的路由,并用它生成一个URL,看看路由认为它应该是什么。更新:看起来路由本身工作正常。是url()函数使它看起来失败了。url()要求我指定
格式
,否则它无法将其识别为有效路由。这是相当令人讨厌的行为。。。是否可以在routes配置中设置默认格式,而不必在每次调用url()时手动输入该格式?请在问题中编辑您的更新。这是一个问答系统,不是一个讨论论坛。更新:这条路线本身似乎运行良好。是url()函数使它看起来失败了。url()要求我指定
格式
,否则它无法将其识别为有效路由。这是相当令人讨厌的行为。。。是否可以在routes配置中设置默认格式,而不必在每次调用url()时手动输入该格式?请在问题中编辑您的更新。这是一个问答系统,不是一个讨论论坛。