Supongamos que tengo un URLconf como el siguiente, y 'foo'
y 'bar'
son valores válidos para page_slug
.Invertir URL de Django con opciones adicionales
urlpatterns = patterns('',
(r'^page/(?P<page_slug>.*)/', 'myapp.views.someview'),
)
Entonces, podría reconstruir las URL usando el siguiente, ¿verdad?
>>> from django.core.urlresolvers import reverse
>>> reverse('myapp.views.someview', kwargs={'page_slug': 'foo'})
'/page/foo/'
>>> reverse('myapp.views.someview', kwargs={'page_slug': 'bar'})
'/page/bar/'
¿Pero y si cambio mi URLconf a esto?
urlpatterns = patterns('',
(r'^foo-direct/', 'myapp.views.someview', {'page_slug': 'foo'}),
(r'^my-bar-page/', 'myapp.views.someview', {'page_slug': 'bar'}),
)
que esperaba este resultado:
>>> from django.core.urlresolvers import reverse
>>> reverse('myapp.views.someview', kwargs={'page_slug': 'foo'})
'/foo-direct/'
>>> reverse('myapp.views.someview', kwargs={'page_slug': 'bar'})
'/my-bar-page/'
Sin embargo, esto produce una excepción NoReverseMatch
. Sospecho que estoy tratando de hacer algo imposible. ¿Alguna sugerencia sobre una forma más sana de lograr lo que quiero?
Las URL con nombre no son una opción, ya que no quiero que otras aplicaciones que los enlazan tengan que conocer los detalles de la estructura de la URL (encapsulación y todo eso).
¿Qué quiere decir con "no funciona"? ¿Mensaje de error? ¿Entonces qué? –
Lanza una excepción 'NoReverseMatch'. –
Actualice la pregunta con nuevos datos: no agregue la información útil como comentarios. –