2010-09-07 23 views
1

我想設置我的路由並啓用一個可選的'格式'擴展名來指定頁面是否應該加載爲標準HTML頁面或在Lightbox 。Python路由 - 我試圖設置格式擴展名,但它失敗

在此之後http://routes.groovie.org/setting_up.html#format-extensions,我想出了:

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}

如何允許格式擴展? :/

+0

更新:它似乎路線本身工作正常。這是使它看起來失敗的url()函數。 url()需要我指定格式,否則它無法將其識別爲有效的路由。這是相當惱人的行爲......是否有可能在路由配置中設置默認格式,而不是每次調用url()時都必須手動輸入它? – dave 2010-09-07 02:26:09

+0

請編輯您的更新到您的問題。這是一個問答系統,而不是討論論壇。 – ssokolow 2010-09-20 06:58:12

回答

1

一般而言:

http://pylonsbook.com/en/1.1/urls-routing-and-dispatch.html#pylons-routing-in-detail

路由隨後搜索中的每個路線地圖從從上到下路由的,直到找到該URL匹配的路線。由於匹配是從上到下完成的,因此建議您始終將自定義路線放置在Pylons提供的路線下面,以確保您不會意外干擾Pylons的默認行爲。更一般地說,您應該始終將最通用的路線放在路線圖的底部,以便在路線圖中的某個更具體的路線下降之前不會意外地匹配。

0

我要檢查的第一件事是您使用的路線是1.12。一些發行版仍在1.11上,它不支持格式擴展。

其次,檢查您的路線定義的順序。它很重要。

+0

我使用的是版本1.12.3。遵循http://pylonsbook.com/en/1.1/urls-routing-and-dispatch.html#pylons-routing-in-detail,我的路線在預定義的「錯誤」和「通用」路線之間 – dave 2010-09-07 01:45:04

+1

In在這種情況下,我的建議是開始縮小問題的範圍。您是否嘗試過對'/ {controller}/{action}'路線進行註釋並刪除網址中的{.format:lightbox}部分,以確認它在沒有擴展說明符的情況下按預期工作? – ssokolow 2010-09-07 01:52:27

+0

如果我刪除格式擴展名,我所有的路由都按預期工作。在那裏有幾個不同的映射到各種控制器/操作,他們都很好。當我添加格式擴展時,這條路線會中斷。我不知道我是否弄錯了實際的路線,或者我認爲,如何將格式傳遞給控制器​​(我在操作中使用'format'參數) – dave 2010-09-07 01:56:26

相關問題