2016-10-06 1 views
1

Je suis en train de développer dans Pyramid 1.7 et je cours dans un scénario intéressant où certaines variables de remplacement d'envoi d'URL correspondent à la route, alors que d'autres ne le font pas. Ces variables sont des nombres, qui peuvent ne pas être les meilleures pratiques ou même être autorisé à partir de ce que je peux dire dans la documentation:Restrictions de la variable de remplacement de l'url Python Pyramid

http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/urldispatch.html

Mon itinéraire est essentiellement défini comme:

config.add_route("my_route", "/path/more_path/{num_var1}-{num_var2}-even_more_path") 

La chose drôle Je vois est que si num_var1 = 1 et num_var2 = 1, le chemin se résout bien. Si num_var1 = 100 et num_var_2 = 100, il se résout aussi bien. Pourtant, si num_var1 = 1 et num_var2 = 100, il ne parvient pas à résoudre. Est-ce un échec auquel je devrais m'attendre pour une raison ou une autre?

Merci!

+1

Vous avez omis de mentionner la valeur de 'var1'. Aussi avez-vous d'autres routes configurées? L'ordre dans lequel les routes sont déclarées (http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/urldispatch.html#route-matching) est important lors de la correspondance. –

+0

Désolé, j'ai ajusté l'itinéraire pour être plus clair. Bien que j'avais une autre variable de remplacement, elle n'était pas pertinente pour cette question. J'ai d'autres routes configurées, mais pour autant que je sache, je ne reçois aucun conflit. Chacun est assez unique pour éviter cela. Vous avez également raison de dire que l'ordre est important, mais la bizarrerie que je vois est que la valeur de remplacement elle-même est importante. Comme je l'ai mentionné, si les valeurs sont les mêmes, je suis OK, mais si je diffère dans la valeur de la route Pyramid erreurs. –

+0

Voyons les autres routes. Ou mieux encore, un exemple entièrement reproductible. –

Répondre

1

J'ai fait un cas de test qui va bien avec vos exemples. N'hésitez pas à jouer avec cela jusqu'à ce qu'il reproduise vos problèmes, mais jusque-là, je ne suis pas sûr de savoir comment vous aider.

from pyramid.config import Configurator 
from webtest import TestApp 

config = Configurator() 
config.add_route('my_route', '/path/more_path/{num_var1}-{num_var2}-even_more_path') 
config.add_view(lambda r: 'hello', route_name='my_route', renderer='string') 
app = config.make_wsgi_app() 
test = TestApp(app) 

test.get('/path/more_path/1-1-even_more_path') 
test.get('/path/more_path/100-100-even_more_path') 
test.get('/path/more_path/1-100-even_more_path') 
test.get('/path/more_path/1-100') # fails, missing extra path