2011-12-20 19 views
0

webapp2ルーティングを使用しようとしていますが、現在は失敗しています。設定したルーティングルールと一致していないようで、結果として特定のルールに対して404が返されます。webapp2 routing returns 404

私のコードは次のようである:

main.py

import webapp2, urls 

    app = webapp2.WSGIApplication(urls.SITE_URL_PATTERNS, debug=True) 

urls.py

from webapp2 import Route 
    from webapp2_extras import routes 

    import test_handler 


    SITE_URL_PATTERNS = [ 
      routes.PathPrefixRoute('/admin', [ 
        Route(r'/action_one', test_handler.take_action_one), 
        Route(r'/action_two', test_handler.take_action_two), 
        Route(r'/<action_three:\w+>', test_handler.take_action_three), 
      ]), 
      Route(r'/view/action_one', test_handler.view_action_one), 
      Route(r'/', test_handler.view_homepage), 
    ] 

app.yamlを

- url: .* 
     script: main.app 

私は/ロードするように見えることはできませんview/action_one(404を返します)、私は/ admin/action_oneをロードできます。

私がここで間違っていることに関する提案はありますか?あなたの助けに感謝!

+0

残りのapp.yamlファイルには何が入っていますか(私はpython27と仮定します。 'SITE_URL_PATTERNS'に' PathPrefixRoute'の前に 'Route( 'r/view/action_one' ...')を置こうとしましたか? – bossylobster

+0

ここで助けてくれてありがとう!app.yamlの残りの部分は、python27のリファレンス私は 'PathPrefixRoute'の前に' Route( 'r/view/action_one' ... ')を移動しようとしましたが、2つのリストを持ち、リストに+ =を付けることによっても外に出ました。なぜこれが動作していないのか混乱しています。 – reallife

答えて

1

さて、私は私の愚かなエラーを検出しました(はい、本当の "DOH!" の瞬間):

Route(r'/<action_three:\w+>' 

Route(r'/<action_three:[^/]+>' 

であるべきことは、これらのように、データストアのキーに一致する問題を含めることができました\ wで表される他の文字。他のすべてのものに行きますが、通常はこの問題を解決します([^ /] +を使用してください)。

これは他の人にも役立ちます。