1

我正在使用url_for('module/myaction/id/3')在修改后的管理生成器屏幕中创建链接。每当我做出一个新动作并尝试用 链接到它时url_for ('module/action/id/3'),我都会得到/module/myaction/action.

当我尝试时,url_for('module/3/myaction')我得到了相同的结果。

但是,当我使用时,url_for('module/myaction?id=3')我得到了预期的结果:module/3/myaction

我的路由文件中只有默认的管理员生成的路由规则。

这种行为是预期的吗?

4

1 回答 1

6

是的,这是意料之中的……从某种意义上说,传入外部 URL 会产生意想不到的结果。

您应该将内部 uri传递给url_for内部 URI,其格式如下:

@route_name?param=value

moduleName/actionName?param=value

在这些情况下,您还可以使用路由名称和对象(如果它是对象路由或路由集合)分别表示内部 url 的参数,它看起来像:

url_for('route_name', params);

params路径期望的对象(通常是 Doctrine 或 Propel 模型实例)或参数数组在哪里。

然后路由系统将这些内部 URI 转换为外部 url。你得到不正确的结果是因为你试图传递外部 URL,这没有意义,因为如果你知道 url,那么就没有理由路由它:-)

于 2011-07-06T23:20:24.467 回答