Je cherche un bon tutoriel pour les espaces de noms d'URL dans Django. Je trouve la documentation officielle un peu trop clairsemée - il manque de bons exemples. J'ai trouvé une question similaire ici sur la pile, mais les réponses ne m'ont pas aidé non plus à bien comprendre le sujet.
Réponses
Trop de publicités?D'accord, les docs pour ce sont plutôt source de confusion. Voici ma lecture de celui-ci (NB: tout le code est non testé!):
En apps.help.urls
:
urlpatterns = patterns(
'',
url(r'^$', 'apps.help.views.index', name='index'),
)
Dans votre main urls.py
:
urlpatterns = patterns(
'',
url(r'^help/', include('apps.help.urls', namespace='help', app_name='help')),
url(r'^ineedhelp/', include('apps.help.urls', namespace='otherhelp', app_name='help')),
)
Dans votre template:
{% url help:index %}
devrait produire l'url /help/
.
{% url otherhelp:index %}
devrait produire l'url /ineedhelp/
.
{% with current_app as 'otherhelp' %}
{% url help:index %}
{% endwith %}
devrait également produire l'url /ineedhelp/
.
De même, reverse('help:index')
devrait produire de l' /help/
.
reverse('otherhelp:index')
devrait produire de l' /ineedhelp/
.
reverse('help:index', current_app='otherhelp')
devrait également produire d' /ineedhelp/
.
Comme je l'ai dit, c'est basé sur ma lecture de la documentation et de mon familiarité avec la façon dont les choses ont tendance à travailler dans Django-terre. Je n'ai pas pris le temps de tester ça.