29 votes

Tout le monde connaît le bon tutoriel sur les espaces de noms des URL Django?

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.

33voto

David Eyk Points 3166

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.

0voto

orokusaki Points 10993

0voto

F.C. Points 3283

C'est à partir de la documentation

(r'^help/', include('apps.help.urls', namespace='foo', app_name='bar')),

Peut-être que vous devriez être plus précis sur ce que vous essayez de faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X