Fonctions utilitaires django.conf.urls

patterns()

patterns(prefix, pattern_description, ...)[source]

Obsolète depuis la version 1.8: urlpatterns devrait plutôt être une simple liste d’instances django.conf.urls.url().

Une fonction acceptant un préfixe et un nombre arbitraire de motifs d’URL, et renvoyant une liste de motifs d’URL au format attendu par Django.

Le premier paramètre reçu par patterns() est un préfixe textuel. Voici l’exemple de configuration d’URL présenté dans Présentation de Django:

from django.conf.urls import patterns, url

urlpatterns = patterns('',
    url(r'^articles/([0-9]{4})/$', 'news.views.year_archive'),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', 'news.views.month_archive'),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', 'news.views.article_detail'),
)

Dans cet exemple, chaque vue a un préfixe commun – 'news.views'. Au lieu de le taper pour chaque élément de la variable urlpatterns, vous pouvez utiliser le premier paramètre de la fonction patterns() pour définir un préfixe à appliquer à chaque vue.

Avec ceci, l’exemple ci-dessus peut être écrit de façon plus concise :

from django.conf.urls import patterns, url

urlpatterns = patterns('news.views',
    url(r'^articles/([0-9]{4})/$', 'year_archive'),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', 'month_archive'),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', 'article_detail'),
)

Remarquez que l’on ne met pas de point (".") à la fin du préfixe. Django s’en charge automatiquement.

Les paramètres restants doivent être des tuples dans ce format :

(regular expression, Python callback function [, optional_dictionary [, optional_name]])

Les paramètres optional_dictionary et optional_name sont décrits dans Transmission de paramètres supplémentaires à une vue.

Note

Comme patterns() est un appel de fonction, elle accepte un maximum de 255 paramètres (de motifs d’URL dans ce cas). Cette limite s’applique à tous les appels de fonctions Python. C’est rarement un problème en pratique, parce que les motifs d’URL sont généralement structurés de façon modulaire avec plusieurs sections include(). Cependant, dans l’hypothèse où vous seriez tout de même confronté à la limite des 255 paramètres, sachez que patterns() renvoie une liste Python, il est donc toujours possible de segmenter la construction de la liste.

urlpatterns = patterns('',
    ...
    )
urlpatterns += patterns('',
    ...
    )

Les listes Python ne sont pas limitées en taille, il n’y a donc aucune limite au nombre de motifs d’URL qu’il est possible de construire. La seule limite est que vous ne pouvez en créer que 254 à la fois (le 255e paramètre est le premier paramètre du préfixe).

static()

static.static(prefix, view=django.views.static.serve, **kwargs)

Fonction utilitaire qui renvoie un motif d’URL pour servir les fichiers en mode débogage :

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Changed in Django 1.8:

Le paramètre view est passé d’une chaîne ('django.views.static.serve') à la fonction elle-même.

url()

url(regex, view, kwargs=None, name=None, prefix='')[source]

urlpatterns doit être une liste d’instances url(). Par exemple :

urlpatterns = [
    url(r'^index/$', index_view, name="main-view"),
    ...
]

Cette fonction accepte cinq paramètres, mais la plupart sont facultatifs :

url(regex, view, kwargs=None, name=None, prefix='')

Le paramètre kwargs permet de transmettre des paramètres supplémentaires à la fonction ou méthode de vue. Voir Transmission de paramètres supplémentaires à une vue pour un exemple.

Voir Nommage des motifs d’URL pour connaître l’utilité du paramètre name.

Obsolète depuis la version 1.8: La prise en charge des paramètres textuels pour view est obsolète et sera supprimée dans Django 1.10. Passez plutôt l’objet exécutable lui-même.

Le paramètre prefix a la même signification que le premier paramètre de patterns() et n’a de sens que si le paramètre view est transmis sous forme de chaîne.

include()

include(module, namespace=None, app_name=None)[source]
include(pattern_list)
include((pattern_list, app_namespace), namespace=None)
include((pattern_list, app_namespace, instance_namespace))

Une fonction acceptant un chemin d’importation Python complet vers un autre module de configuration d’URL devant être « inclus » à cet endroit. Il est possible d’indiquer aussi l’espace de noms d’application et l’espace de noms d’instance dans lesquels les éléments seront inclus.

Habituellement, l’espace de noms d’application doit être défini par le module inclus. Si un espace de noms d’application est défini, le paramètre namespace peut être utilisé pour définir un espace de noms d’instance différent.

include() accepte aussi en paramètre soit un objet itérable renvoyant des motifs d’URL, un tuple binaire contenant l’objet itérable avec les noms des espaces de noms d’application, ou un tuple ternaire contenant un tel objet itérable accompagné des noms des espaces de noms d’application et d’instance.

Paramètres:
  • module – Module de configuration d’URL (ou nom de module)
  • namespace (string) – Espace de noms d’instance pour les lignes d’URL à inclure
  • app_name (string) – Espace de noms d’application pour les lignes d’URL à inclure
  • pattern_list – Liste d’instances django.conf.urls.url()
  • app_namespace (string) – Espace de noms d’application pour les lignes d’URL à inclure
  • instance_namespace (string) – Espace de noms d’instance pour les lignes d’URL à inclure

Voir Inclusion d’autres URLconfs et Espaces de noms d’URL et configurations d’URL incluses.

Obsolète depuis la version 1.9: La prise en charge du paramètre app_name est obsolète et sera supprimée dans Django 2.0. Indiquez plutôt app_name de la manière présentée dans Espaces de noms d’URL et configurations d’URL incluses.

La possibilité de passer un tuple de 3 éléments est également obsolète et sera supprimée dans Django 2.0. Passez un tuple à 2 éléments contenant la liste des motifs et l’espace de noms d’application, et utilisez à la place le paramètre namespace.

Enfin, la prise en charge d’un espace de noms d’instance sans espace de noms d’application est maintenant obsolète et sera supprimée dans Django 2.0. Indiquez l’espace de noms d’application ou supprimez l’espace de noms d’instance.

handler400

handler400

Un objet exécutable ou une chaîne représentant le chemin d’importation Python complet vers la vue devant être appelée si le client HTTP a envoyé une requête qui a provoqué une condition d’erreur et une réponse avec un code de statut 400.

Par défaut, il s’agit de 'django.views.defaults.bad_request'. Si vous implémentez une vue personnalisée, prenez soin de renvoyer une réponse HttpResponseBadRequest.

Consultez la documentation à propos de la vue 400 (mauvaise requête) pour plus d’informations.

handler403

handler403

Un objet exécutable ou une chaîne représentant le chemin d’importation Python complet vers la vue devant être appelée si l’utilisateur n’a pas les droits nécessaires pour accéder à une ressource.

Par défaut, il s’agit de 'django.views.defaults.permission_denied'. Si vous implémentez une vue personnalisée, prenez soin de renvoyer une réponse HttpResponseForbidden.

Consultez la documentation à propos de la vue 403 (HTTP interdit) pour plus d’informations.

handler404

handler404

Un objet exécutable ou une chaîne représentant le chemin d’importation Python complet vers la vue devant être appelée si aucun des motifs d’URL ne correspond.

Par défaut, il s’agit de 'django.views.defaults.page_not_found'. Si vous implémentez une vue personnalisée, prenez soin de renvoyer une réponse HttpResponseNotFound.

Consultez la documentation à propos de la vue 404 (HTTP non trouvé) pour plus d’informations.

handler500

handler500

Un objet exécutable ou une chaîne représentant le chemin d’importation Python complet vers la vue devant être appelée en cas d’erreur de serveur. Les erreurs de serveur se produisent lorsque des erreurs d’exécution apparaissent dans le code des vues.

Par défaut, il s’agit de 'django.views.defaults.server_error'. Si vous implémentez une vue personnalisée, prenez soin de renvoyer une réponse HttpResponseServerError.

Consultez la documentation à propos de la vue 500 (HTTP erreur interne de serveur) pour plus d’informations.

Back to Top