# Documentation Django 3.1.9.dev

# Fonctions `django.urls` à utiliser dans les configurations d’URL

## `path()`

`path`(route, view, kwargs=None, name=None)

Renvoie un élément à inclure dans `urlpatterns`. Par exemple

    from django.urls import include, path

    urlpatterns = [
        path('index/', views.index, name='main-view'),
        path('bio/<username>/', views.bio, name='bio'),
        path('articles/<slug:title>/', views.article, name='article-detail'),
        path('articles/<slug:title>/<int:section>/', views.section, name='article-section'),
        path('weblog/', include('blog.urls')),
        ...
    ]

Le paramètre `route` doit être une chaîne ou un résultat `gettext_lazy()` (voir Traduction de motifs d’URL) contenant un motif d’URL. La chaîne peut contenir des chevrons (comme `<username>` ci-dessus) pour capturer une partie de l’URL et l’envoyer sous forme de paramètre nommé à la vue. Les chevrons peuvent contenir une indication de conversion (comme la partie `int` dans `<int:section>`) qui limite les caractères qui correspondront et peut aussi changer le type de la variable transmise à la vue. Par exemple, `<int:section>` correspond à une chaînes composée de chiffres et convertit la valeur en entier `int`. Voir Processus de traitement des requêtes par Django pour plus de détails.

Le paramètre `view` est une fonction de vue ou le résultat de `as_view()` pour les vues fondées sur des classes. Cela peut aussi être une inclusion `django.urls.include()`.

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`.

## `re_path()`

`re_path`(route, view, kwargs=None, name=None)

Renvoie un élément à inclure dans `urlpatterns`. Par exemple

    from django.urls import include, re_path

    urlpatterns = [
        re_path(r'^index/$', views.index, name='index'),
        re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'),
        re_path(r'^weblog/', include('blog.urls')),
        ...
    ]

Le paramètre `route` devrait être une chaîne ou une valeur `gettext_lazy()` (voir Traduction de motifs d’URL) contenant une expression régulière compatible avec le module `re` de Python. Les chaînes utilisent typiquement la syntaxe des chaînes brutes (`r''`) afin qu’elles puissent contenir des séquences telles que `\d` sans devoir échapper la barre oblique inverse avec une autre barre. Lorsqu’une correspondance est trouvée, les groupes capturés à partir de l’expression régulière sont transmis à la vue – sous forme de paramètres nommés si les groupes sont nommés ou sous forme de paramètres positionnels le cas contraire. Les valeurs sont passées sous forme de chaînes sans conversion de type.

Les paramètres `view`, `kwargs` et `name` sont les mêmes que pour `path()`.

## `include()`

`include`(module, namespace=None)
`include`(pattern_list)
`include`((pattern_list, app_namespace), namespace=None)

  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 ou un tuple binaire contenant un tel objet itérable accompagné des noms des espaces de noms d’application.

  Paramètres: | module – Module de configuration d’URL (ou nom de module) namespace (str) – Espace de noms d’instance pour les lignes d’URL à inclure pattern_list – Objet itérable d’instances `path()` ou `re_path()`. app_namespace (str) – Espace de noms d’application pour les lignes d’URL à inclure

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

## `register_converter()`

`register_converter`(converter, type_name)

La fonction pour inscrire un convertisseur à utiliser dans les `route`s de `path()`.

Le paramètre `converter` est une classe de convertisseur et `type_name` est le nom du convertisseur à utiliser dans les motifs de chemins. Voir Inscription de convertisseurs de chemin personnalisés pour trouver un exemple.

# Fonctions `django.conf.urls` à utiliser dans les configurations d’URL

## `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)

## `url()`

`url`(regex, view, kwargs=None, name=None)

Cette fonction est un alias de `django.urls.re_path()`.

Obsolète depuis la version 3.1: Alias de `django.urls.re_path()` pour des questions de rétrocompatibilité.

## `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, vérifiez qu’elle accepte les paramètres `request` et `exception` et qu’elle renvoie une réponse `HttpResponseBadRequest`.

## `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, vérifiez qu’elle accepte les paramètres `request` et `exception` et qu’elle renvoie une réponse `HttpResponseForbidden`.

## `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, vérifiez qu’elle accepte les paramètres `request` et `exception` et qu’elle renvoie une réponse `HttpResponseNotFound`.

## `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, assurez-vous qu’elle accepte un paramètre `request` et qu’elle renvoie une réponse `HttpResponseServerError`.