我有一个web2py网站,有两个应用程序:标准管理应用程序和自定义的“myapp”应用程序。为了便于讨论,我们会说该网站位于sub.projdomain.com网站'. 我已经花了好几个小时想弄清楚路由和python正则表达式,但是我似乎无法实现我想要的功能。我试图复制以下行为:
URL in address bar Effective URL
------------------ -------------
sub.projdomain.com sub.projdomain.com/myapp/default/index
sub.projdomain.com/ sub.projdomain.com/myapp/default/index
sub.projdomain.com/foo sub.projdomain.com/myapp/foo/index
sub.projdomain.com/foo?p=1 sub.projdomain.com/myapp/foo/index?p=1
sub.projdomain.com/foo/?p=2 sub.projdomain.com/myapp/foo/index?p=2
sub.projdomain.com/foo/bar?p=3 sub.projdomain.com/myapp/foo/bar?p=3
sub.projdomain.com/foo/bar/?p=4 sub.projdomain.com/myapp/foo/bar?p=4
sub.projdomain.com/a sub.projdomain.com/admin/default/site
我在从页面调用URL('login')或URL('/login')时似乎总是遇到问题。”sub.projdomain.com/foo/bar/“并获取表单的错误URL”sub.projdomain.com/foo/login/或者类似的东西。目前我正在设置“routes”和“routes”元组,因为我无法让它与“routes”一起工作。我觉得我忽略了一系列简单的路线。我是不是想得太多了?在
----更新----
好吧,我想我已经找到了一套方法来获得我想要的行为,但是我真的很想知道这是否是实现它的正确方法。在
^{pr2}$这个设置要求我仔细构造传递给URL(..)的参数。我希望它能更容易地预测URL(..)产生的结果,但我怀疑它是否比这简单。。。感谢任何帮助!在
您应该能够使用parameter-based rewrite system获得大致相同的结果:
唯一的区别是“admin”应用程序仍需要URL中的“admin”(尽管我想您可以尝试通过将文件夹重命名为“a”来更改应用程序本身的名称)。在
注意,如果您想删除“index”(在admin中是“site”),则只需要在控制器中列出
functions
,当URL附加了额外的参数时(路由器需要能够区分URL参数和控制器函数)。在好吧,我想我明白了。我还没有遇到过URL()无法生成正确字符串的情况。我认为这可以进一步简化,但这里是:
我将“admin”应用程序重命名为“a”。每当我调用URL()时,我必须显式传递2个参数。第一个参数始终是控制器的名称,第二个参数始终是紧随任何GET请求变量的操作名称。E、 g.
URL('default', 'index')
用于主索引页,URL('foo', 'bar?param=3')
用于foo
中的操作bar
,并指定了param
。但是,不允许使用URL('foo', '?indexParam=test')
,因为在第二个参数中的变量之前没有指定index
。只要我遵守这些规则,一切似乎都能始终如一地工作。在我愿意接受任何其他建议,但这是我接受的答案。我希望这能帮助其他人度过同样的困境。在
相关问题 更多 >
编程相关推荐