Supposons que j'ai un URLconf comme ci-dessous, et 'foo'
et 'bar'
sont des valeurs valides pour page_slug
.Inverser les URL Django avec options supplémentaires
urlpatterns = patterns('',
(r'^page/(?P<page_slug>.*)/', 'myapp.views.someview'),
)
Puis, je pourrais reconstruire les URL en utilisant le ci-dessous, non?
>>> 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/'
Mais que se passe-t-il si je change mon URLconf en cela?
urlpatterns = patterns('',
(r'^foo-direct/', 'myapp.views.someview', {'page_slug': 'foo'}),
(r'^my-bar-page/', 'myapp.views.someview', {'page_slug': 'bar'}),
)
Je me attendais à ce résultat:
>>> 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/'
Cependant, ce renvoie une exception NoReverseMatch
. Je soupçonne que j'essaie de faire quelque chose d'impossible. Des suggestions sur une façon plus saine d'accomplir ce que je veux?
Les URL nommées ne sont pas une option, car je ne veux pas que d'autres applications qui lient à celles-ci aient besoin de connaître les spécificités de la structure d'URL (encapsulation et tout ça).
Que voulez-vous dire par "ne fonctionne pas"? Message d'erreur? Si oui, quoi? –
Il déclenche une exception 'NoReverseMatch'. –
S'il vous plaît mettre à jour la question avec de nouveaux faits - ne pas ajouter les informations utiles comme commentaires. –