2013-08-13 6 views
0

J'ai code pour une page, avec des classes sous forme depages dynamiques dans Google App Engine

class page1(webapp2.RequestHandler): 
    ...code... 

class page2(webapp2.RequestHandler): 
    ...code... 

et ainsi de suite. Ensuite, je

application = webapp2.WSGIApplication([ 
    ('/', page1), 
    ('/page2', page2), 
    ...(other pages)... 
], debug=True) 

Il y a des URL que je ne connais pas, donc je ne peux pas les mettre dans la section d'application. Je sais qu'ils sont sous la forme

'/page2/[something]' 

ou

'/page2/[something]/[something_else]' 

et ainsi de suite, mais au-delà, je ne sais pas quoi que ce soit à leur sujet. Je veux faire correspondre '/ page2/[quelque chose]' à la classe page2. Je clique sur un lien hypertexte, et cela m'amène à la page '/ page2/abc' ou '/ page2/def', et je veux qu'ils soient tous associés à la même classe de page. Comment ferais-je cela?

Edit:

J'ai essayé d'utiliser la cartographie regex, avec

application = webapp2.WSGIApplication([ 
    ('/', page1), 
    ('/page2', page2), 
    ('/page2/*', page2) 
], debug=True) 

Mais quand je vais à une page avec l'URL/page2/[quelque chose], il me donne une erreur 404 Introuvable .

+0

Vous devez concevoir votre schéma d'URL sous une forme générale, puis rechercher des solutions. Si vous voulez utiliser webapp2, vous devrez utiliser le mapping regex. ALternately regarder d'autres gestionnaires/environnements comme bobo, flacon, pyramide. Par exemple, j'utilise la pyramide pour les applications de style cms avec des URL de profondeur arbitraires qui correspondent aux hiérarchies d'objets. –

+0

Voir ma modification - J'essaie d'utiliser la cartographie regex. – blacktrance

Répondre

1

Ce que vous devez faire est de lire here et mapper vos URLs comme spécifié. Consultez cette ligne:

webapp2.Route(r'/products/<product_id:\d+>', handler=ProductHandler, name='product'), 

cela signifie que vous attendez un entier (d+ signifie 1 ou plusieurs numéros, de manière séquentielle, comme 1, 123, 12491479, etc.) et vous que les informations disponibles dans votre point de vue product_id

C'est ce que signifie regex mapping. Si vous ne savez pas ce que votre params ressemblera, je vous suggère de les stocker dans une demande GET, vous aurez donc pas besoin de spécifier une carte pour les

('/page2/.*', page2) 

est suffisant pour attraper une url du formulaire /page2/?param=val&param=val&...

+0

Et pourtant ('/ page2', page2) me donne une erreur 404 non trouvée. – blacktrance

+0

est '/' travail du tout? –

+0

/charge avec succès la page1. ('/ page2, page2) charge correctement la page2, mais ne charge rien du formulaire/page2/[thing_else]. – blacktrance