2012-01-06 9 views
-3

私のルーティングは私にとってはうまくいますが、フレームワークはwebapp2に更新されているので、ルーティングを混在させ、どの方法が最善であるか分かりません。どのようにルーティングする必要がありますか?フレームワークにルーティングをハンドラのデフォルト値にするか、ハンドラの上に直接ルーティングを設定する方が良いでしょうか?新しいURIを追加するとき私のルーティングを改善するのを助けてください

app = webapp2.WSGIApplication([ 
    ('/', HomeHandler), 
    ('/shop', FileUploadFormHandler), 
    ('/mypage', MyPageHandler), 
    webapp2.Route(r'/newpassword/', handler=NewPassword, name='newpassword'), 
    webapp2.Route(r'/signup/', handler=Signup, name='signup'), 
    webapp2.Route(r'/myorg/', handler=Myorg, name='signup'), 
    webapp2.Route(r'/register/', handler=Register, name='register'), 
    webapp2.Route(r'/education/objectives/index', handler=Objectives, name='objectives'), 
    webapp2.Route(r'/newdistributor/', handler=NewDistributor, name='newdistributor'), 
    webapp2.Route(r'/emaillogin/', handler=Emaillogin, name='emaillogin'), 
    webapp2.Route(r'/paysonreceive/', handler=PaysonReceiveHandler, name='paysonreceivehandler'), 
    webapp2.Route(r'/paysonhandler/', handler=PaysonHandler, name='paysonhandler'), 
    webapp2.Route('/passwdreset/<token>', handler=PasswordReset, name='passwordreset'), 
    ('/shop/articles', ShopHandler), 
    ('/info', InfoHandler), 
    ('/update', UpdateHandler), 
    ('/support', SupportHandler), 
    ('/events.*', EventHandler), 
    ('/academy', AcademyHandler), 
    ('/marketing.*', MarketingHandler), 
    ('/dropbox', FileUploadFormHandler), 
    ('/upload', FileUploadHandler), 
    ('/user/register', UserRegisterHandler), 
    ('/tracker', TrackerHandler), 
    ('/generate_upload_url', GenerateUploadUrlHandler), 
    ('/file/([0-9]+)', FileInfoHandler), 
    ('/file/([0-9]+)/download', FileDownloadHandler), 
    ('/file/([0-9]+)/success', AjaxSuccessHandler), 
    ('/home', Home), 
    ('/paypal', Home), 
    ('/sell', Sell), 
    ('/sell/(.*)/', Sell), 
    ('/buy/(.*)/return/(.*)/(.*)/', BuyReturn), 
    ('/buy/(.*)/cancel/(.*)/', BuyCancel), 
    ('/buy/(.*)/', Buy), 
    ('/image/(.*)/', PPImage), 
    webapp2.Route(r'/login/', handler=NewLoginHandler, name='login'), 
    webapp2.Route(r'/logout/', handler=NewLogoutHandler, name='logout' 
       ), 
    webapp2.Route(r'/secure/', handler=SecureRequestHandler, 
        name='secure'), 
    webapp2.Route(r'/create/', handler=CreateUserHandler, 
        name='create-user'), 
    ], config=config) 

だから私は、ルーティングおよびハンドラCLAS、それらはちょうどからの応答を得るためのものを追加するための、あまりにも多くの場所があるので、理想的ではないテンプレートをapp.yamlをするの両方を追加する必要がありますWSGI。だから私はそれがすでに一意の名前を持っているので、それはデフォルトのルーティングを持つ必要がありますRequestHandlerクラスを追加する場合、インスタンスのためのより多くのデフォルト値で動作するようにコードに再加工したいと思います。フレームワークはそうすることができますか?私は、デフォルトのルーティングを作成するとは思わないの任意の回答やコメント

答えて

1

ため

おかげで良いアイデアですが、あなたはそれを作成することができるはずです。例:

import pages1 
import pages2 

def route_generator(modules): 
    urls = [] 
    for m in modules: 
     for h in dir(m): 
      handler = eval("%s.%s"%(m.__name__, h)) 
      if issubclass(handler, webapp.RequestHandler):     
       urls.append(('/%s/'%(handler.__name__), handler)) 

    return urls 

# list all module contained your handler class. 
# and use a generator to generate the url mapping. 
app = webapp2.WSGIApplication(route_generator([pages1,pages2], config=config)   
関連する問題