---
title: "Fonctions utilitaires django.conf.urls"
version: 1.9
locale: fr
source: https://docs.djangoproject.com/fr/1.9/ref/urls/
canonical: https://djangodocs.dev/fr/1.9/ref/urls/
---
# Fonctions utilitaires `django.conf.urls`

## `patterns()`

#### `patterns(prefix, pattern_description, ...)`

> **Deprecated since Django 1.8**
>
> Obsolète depuis la version 1.8: `urlpatterns` devrait plutôt être une simple liste d’instances [`django.conf.urls.url()`](#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](/fr/1.9/intro/overview/):

```
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](/fr/1.9/topics/http/urls/#views-extra-options).

> **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='')`

`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](/fr/1.9/topics/http/urls/#views-extra-options) pour un exemple.

Voir [Nommage des motifs d’URL](/fr/1.9/topics/http/urls/#naming-url-patterns) pour connaître l’utilité du paramètre `name`.

> **Deprecated since Django 1.8**
>
> 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)`

#### `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](/fr/1.9/topics/http/urls/#term-application-namespace) et l”[espace de noms d’instance](/fr/1.9/topics/http/urls/#term-instance-namespace) 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()`](#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](/fr/1.9/topics/http/urls/#including-other-urlconfs) et [Espaces de noms d’URL et configurations d’URL incluses](/fr/1.9/topics/http/urls/#namespaces-and-include).

> **Deprecated since Django 1.9**
>
> 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](/fr/1.9/topics/http/urls/#namespaces-and-include).
>
> 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`](/fr/1.9/ref/request-response/#django.http.HttpResponseBadRequest).

Consultez la documentation à propos de la [vue 400 (mauvaise requête)](/fr/1.9/ref/views/#http-bad-request-view) 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`](/fr/1.9/ref/request-response/#django.http.HttpResponseForbidden).

Consultez la documentation à propos de la [vue 403 (HTTP interdit)](/fr/1.9/ref/views/#http-forbidden-view) 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`](/fr/1.9/ref/request-response/#django.http.HttpResponseNotFound).

Consultez la documentation à propos de la [vue 404 (HTTP non trouvé)](/fr/1.9/ref/views/#http-not-found-view) 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`](/fr/1.9/ref/request-response/#django.http.HttpResponseServerError).

Consultez la documentation à propos de la [vue 500 (HTTP erreur interne de serveur)](/fr/1.9/ref/views/#http-internal-server-error-view) pour plus d’informations.
