{"title":"Fonctions utilitaires django.urls","version":"6.0","locale":"fr","docname":"ref/urlresolvers","url":"/fr/6.0/ref/urlresolvers/","canonical":"https://djangodocs.dev/fr/6.0/ref/urlresolvers/","summary":"reverse() Lien vers cette rubrique # La fonction reverse() peut être utilisée pour renvoyer un chemin absolut pour une vue donnée et ses paramètres facultatifs, de…","html":"<span id=\"django-urls-utility-functions\"></span><h1>Fonctions utilitaires <code class=\"docutils literal notranslate\"><span class=\"pre\">django.urls</span></code><a class=\"heading-anchor\" href=\"#module-django.urls\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"reverse\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">reverse()</span></code><a class=\"heading-anchor\" href=\"#reverse\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">reverse()</span></code> peut être utilisée pour renvoyer un chemin absolut pour une vue donnée et ses paramètres facultatifs, de la même façon que la balise <a class=\"reference internal\" href=\"/fr/6.0/ref/templates/builtins/#std-templatetag-url\"><code class=\"xref std std-ttag docutils literal notranslate\"><span class=\"pre\">url</span></code></a>:</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.urls.reverse\">\n<span class=\"sig-name descname\"><span class=\"pre\">reverse</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">viewname</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">urlconf</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">args</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">kwargs</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">current_app</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\"><span class=\"pre\">*</span></abbr></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">query</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fragment</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.urls.reverse\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">viewname</span></code> peut être un <a class=\"reference internal\" href=\"/fr/6.0/topics/http/urls/#naming-url-patterns\"><span class=\"std std-ref\">nom de motif d’URL</span></a> ou l’objet de vue lui-même utilisé dans la configuration des URL. Par exemple, étant donné l”<code class=\"docutils literal notranslate\"><span class=\"pre\">url</span></code> suivante :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">news</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;archive/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">archive</span><span class=\"p\">,</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;news-archive&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>vous pouvez utiliser indifféremment les appels suivants pour obtenir l’URL :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># using the named URL</span>\n<span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;news-archive&quot;</span><span class=\"p\">)</span>\n\n<span class=\"c1\"># passing a callable object</span>\n<span class=\"c1\"># (This is discouraged because you can&#39;t reverse namespaced views this way.)</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">news</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">archive</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Si l’URL accepte des paramètres, vous pouvez les transmettre dans <code class=\"docutils literal notranslate\"><span class=\"pre\">args</span></code>. par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">reverse</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">myview</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"n\">HttpResponseRedirect</span><span class=\"p\">(</span><span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;arch-summary&quot;</span><span class=\"p\">,</span> <span class=\"n\">args</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"mi\">1945</span><span class=\"p\">]))</span>\n</code></pre></div>\n<p>Vous pouvez aussi transmettre <code class=\"docutils literal notranslate\"><span class=\"pre\">kwargs</span></code> au lieu de <code class=\"docutils literal notranslate\"><span class=\"pre\">args</span></code>. Par exemple :</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;admin:app_list&quot;</span><span class=\"p\">,</span> <span class=\"n\">kwargs</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;app_label&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;auth&quot;</span><span class=\"p\">})</span>\n<span class=\"go\">&#39;/admin/auth/&#39;</span>\n</code></pre></div>\n<p>Il n’est pas possible de passer à la fois <code class=\"docutils literal notranslate\"><span class=\"pre\">args</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">kwargs</span></code> à <code class=\"docutils literal notranslate\"><span class=\"pre\">reverse()</span></code>.</p>\n<p>Si aucune correspondance n’est trouvée, <code class=\"docutils literal notranslate\"><span class=\"pre\">reverse()</span></code> génère une exception <a class=\"reference internal\" href=\"/fr/6.0/ref/exceptions/#django.urls.NoReverseMatch\" title=\"django.urls.NoReverseMatch\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">NoReverseMatch</span></code></a>.</p>\n<p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">reverse()</span></code> peut résoudre une large palette de motifs d’expressions régulières correspondant à des URL, mais pas tous. La principale restriction actuellement est que le motif ne peut pas contenir différents choix possibles indiqués par la barre verticale (<code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;|&quot;</span></code>). De tels motifs peuvent sans problème être utilisés pour résoudre des URL entrantes et faire appel à la vue correspondante, mais il n’est pas possible de les utiliser pour effectuer des résolutions inverses.</p>\n<p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">current_app</span></code> vous permet de donner une indication au résolveur pour signaler l’application à laquelle appartient la vue en cours d’exécution. Ce paramètre  <code class=\"docutils literal notranslate\"><span class=\"pre\">current_app</span></code> est employé comme indication pour résoudre des espaces de noms d’application en URL d’instances spécifiques d’application, en accord avec la <a class=\"reference internal\" href=\"/fr/6.0/topics/http/urls/#topics-http-reversing-url-namespaces\"><span class=\"std std-ref\">stratégie de résolution d’URL avec espaces de noms</span></a>.</p>\n<p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">urlconf</span></code> est le module de configuration d’URL contenant les motifs d’URL à utiliser pour la résolution. Par défaut, la configuration d’URL racine du fil d’exécution en cours est utilisée.</p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">query</span></code> keyword argument specifies parameters to be added to the returned\nURL. It can accept an instance of <a class=\"reference internal\" href=\"/fr/6.0/ref/request-response/#django.http.QueryDict\" title=\"django.http.QueryDict\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code></a> (such as\n<code class=\"docutils literal notranslate\"><span class=\"pre\">request.GET</span></code>) or any value compatible with <a class=\"reference external\" href=\"https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlencode\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">urllib.parse.urlencode()</span></code></a>.\nThe encoded query string is appended to the resolved URL, prefixed by a <code class=\"docutils literal notranslate\"><span class=\"pre\">?</span></code>.</p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">fragment</span></code> keyword argument specifies a fragment identifier to be\nappended to the returned URL (that is, after the path and query string,\npreceded by a <code class=\"docutils literal notranslate\"><span class=\"pre\">#</span></code>).</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">reverse</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;admin:index&quot;</span><span class=\"p\">,</span> <span class=\"n\">query</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;q&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;biscuits&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;page&quot;</span><span class=\"p\">:</span> <span class=\"mi\">2</span><span class=\"p\">},</span> <span class=\"n\">fragment</span><span class=\"o\">=</span><span class=\"s2\">&quot;results&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;/admin/?q=biscuits&amp;page=2#results&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;admin:index&quot;</span><span class=\"p\">,</span> <span class=\"n\">query</span><span class=\"o\">=</span><span class=\"p\">[(</span><span class=\"s2\">&quot;color&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;blue&quot;</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"s2\">&quot;color&quot;</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"s2\">&quot;none&quot;</span><span class=\"p\">,</span> <span class=\"kc\">None</span><span class=\"p\">)])</span>\n<span class=\"go\">&#39;/admin/?color=blue&amp;color=1&amp;none=None&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;admin:index&quot;</span><span class=\"p\">,</span> <span class=\"n\">query</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;has empty spaces&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;also has empty spaces!&quot;</span><span class=\"p\">})</span>\n<span class=\"go\">&#39;/admin/?has+empty+spaces=also+has+empty+spaces%21&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;admin:index&quot;</span><span class=\"p\">,</span> <span class=\"n\">fragment</span><span class=\"o\">=</span><span class=\"s2\">&quot;no encoding is done&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;/admin/#no encoding is done&#39;</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">query</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">fragment</span></code> arguments were added.</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>La chaîne d’URL renvoyée par <code class=\"docutils literal notranslate\"><span class=\"pre\">reverse()</span></code> est déjà <a class=\"reference internal\" href=\"/fr/6.0/ref/unicode/#uri-and-iri-handling\"><span class=\"std std-ref\">échappée</span></a>. Par exemple :</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;cities&quot;</span><span class=\"p\">,</span> <span class=\"n\">args</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;Orléans&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">&#39;.../Orl%C3%A9ans/&#39;</span>\n</code></pre></div>\n<p>Si vous appliquez d’autres codages (tel que <a class=\"reference external\" href=\"https://docs.python.org/3/library/urllib.parse.html#urllib.parse.quote\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">urllib.parse.quote()</span></code></a>) à la valeur renvoyée par <code class=\"docutils literal notranslate\"><span class=\"pre\">reverse()</span></code>, cela peut produire des résultats non désirés.</p>\n</aside>\n<aside class=\"admonition-reversing-class-based-views-by-view-object admonition\">\n<p class=\"admonition-title\">Reversing class-based views by view object</p>\n<p>The view object can also be the result of calling\n<a class=\"reference internal\" href=\"/fr/6.0/ref/class-based-views/base/#django.views.generic.base.View.as_view\" title=\"django.views.generic.base.View.as_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">as_view()</span></code></a> if the same view object is\nused in the URLConf. Following the original example, the view object could\nbe defined as:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">news/views.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code> <span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">View</span>\n\n\n <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArchiveView</span><span class=\"p\">(</span><span class=\"n\">View</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n\n\n <span class=\"n\">archive</span> <span class=\"o\">=</span> <span class=\"n\">ArchiveView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">()</span>\n</code></pre></figure>\n<p>Cependant, rappelez-vous que les vues avec espace de noms ne peuvent pas être inversées à partir de l’objet vue.</p>\n</aside>\n</section>\n<section id=\"reverse-lazy\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">reverse_lazy()</span></code><a class=\"heading-anchor\" href=\"#reverse-lazy\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Une version de <a class=\"reference internal\" href=\"#reverse\">reverse()</a> à exécution différée.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.urls.reverse_lazy\">\n<span class=\"sig-name descname\"><span class=\"pre\">reverse_lazy</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">viewname</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">urlconf</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">args</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">kwargs</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">current_app</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\"><span class=\"pre\">*</span></abbr></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">query</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fragment</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.urls.reverse_lazy\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Cette fonction est utile lorsque vous avez besoin de procéder à une résolution d’URL avant le chargement de la configuration des URL. Voici quelques cas fréquents d’utilisation de cette fonction :</p>\n<ul class=\"simple\">\n<li><p>attribution d’une URL inversée comme attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">url</span></code> d’une vue générique fondée sur les classes.</p></li>\n<li><p>attribution d’une URL inversée à un décorateur (comme pour le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">login_url</span></code> du décorateur <a class=\"reference internal\" href=\"/fr/6.0/topics/auth/default/#django.contrib.auth.decorators.permission_required\" title=\"django.contrib.auth.decorators.permission_required\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.decorators.permission_required()</span></code></a>).</p></li>\n<li><p>attribution d’une URL inversée comme valeur par défaut d’un paramètre dans une signature de fonction.</p></li>\n</ul>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">query</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">fragment</span></code> arguments were added.</p>\n</aside>\n</section>\n<section id=\"resolve\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">resolve()</span></code><a class=\"heading-anchor\" href=\"#resolve\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>La fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">resolve()</span></code> peut être utilisée pour résoudre un chemin d’URL en sa fonction de vue correspondante. Sa signature est la suivante :</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.urls.resolve\">\n<span class=\"sig-name descname\"><span class=\"pre\">resolve</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">path</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">urlconf</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.urls.resolve\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">path</span></code> est le chemin d’URL à résoudre. Comme pour <a class=\"reference internal\" href=\"#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a>, il n’y a pas besoin de se préoccuper du paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">urlconf</span></code>. La focntion renvoie un objet <a class=\"reference internal\" href=\"#django.urls.ResolverMatch\" title=\"django.urls.ResolverMatch\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ResolverMatch</span></code></a> permettant d’accéder à diverses métadonnées au sujet de l’URL résolue.</p>\n<p>Si l’URL n’est pas résolue, la fonction génère l’exception <a class=\"reference internal\" href=\"/fr/6.0/ref/exceptions/#django.urls.Resolver404\" title=\"django.urls.Resolver404\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">Resolver404</span></code></a> (qui est une sous-classe de <a class=\"reference internal\" href=\"/fr/6.0/topics/http/views/#django.http.Http404\" title=\"django.http.Http404\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Http404</span></code></a>).</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ResolverMatch</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.func\">\n<span class=\"sig-name descname\"><span class=\"pre\">func</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.func\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La fonction de vue qui aurait été utilisée pour servir l’URL.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.args\">\n<span class=\"sig-name descname\"><span class=\"pre\">args</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.args\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Les paramètres qui auraient été transmis à la fonction de vue, tels qu’ils ont été extraits de l’URL.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.kwargs\">\n<span class=\"sig-name descname\"><span class=\"pre\">kwargs</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.kwargs\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tous les paramètres nommés qui ont été transmis à la fonction de vue, c’est-à-dire <a class=\"reference internal\" href=\"#django.urls.ResolverMatch.captured_kwargs\" title=\"django.urls.ResolverMatch.captured_kwargs\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">captured_kwargs</span></code></a> et <a class=\"reference internal\" href=\"#django.urls.ResolverMatch.extra_kwargs\" title=\"django.urls.ResolverMatch.extra_kwargs\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">extra_kwargs</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.captured_kwargs\">\n<span class=\"sig-name descname\"><span class=\"pre\">captured_kwargs</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.captured_kwargs\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Les paramètres nommés capturés qui auraient été transmis à la fonction de vue, tels qu’ils ont été extraits de l’URL.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.extra_kwargs\">\n<span class=\"sig-name descname\"><span class=\"pre\">extra_kwargs</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.extra_kwargs\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Les paramètres nommés supplémentaires qui auraient été transmis à la fonction de vue.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.url_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">url_name</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.url_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le nom du motif d’URL correspondant à l’URL.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.route\">\n<span class=\"sig-name descname\"><span class=\"pre\">route</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.route\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La route du motif d’URL correspondant.</p>\n<p>Par exemple, si <code class=\"docutils literal notranslate\"><span class=\"pre\">path('users/&lt;id&gt;/',</span> <span class=\"pre\">...)</span></code> set le motif de correspondance, <code class=\"docutils literal notranslate\"><span class=\"pre\">route</span></code> contiendra <code class=\"docutils literal notranslate\"><span class=\"pre\">'users/&lt;id&gt;/'</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.tried\">\n<span class=\"sig-name descname\"><span class=\"pre\">tried</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.tried\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La liste des motifs d’URL essayés avant que l’URL ait trouvé une correspondance ou que tous les motifs aient été essayés.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.app_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">app_name</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.app_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>L’espace de noms d’application pour le motif d’URL correspondant à l’URL.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.app_names\">\n<span class=\"sig-name descname\"><span class=\"pre\">app_names</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.app_names\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La liste des composants d’espace de noms individuels dans l’espace de noms d’application complet du motif d’URL correspondant à l’URL. Si par exemple <code class=\"docutils literal notranslate\"><span class=\"pre\">app_name</span></code> contient <code class=\"docutils literal notranslate\"><span class=\"pre\">foo:bar</span></code>, alors <code class=\"docutils literal notranslate\"><span class=\"pre\">app_names</span></code> contiendra <code class=\"docutils literal notranslate\"><span class=\"pre\">['foo',</span> <span class=\"pre\">'bar']</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.namespace\">\n<span class=\"sig-name descname\"><span class=\"pre\">namespace</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.namespace\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>L’espace de noms d’instance pour le motif d’URL correspondant à l’URL.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.namespaces\">\n<span class=\"sig-name descname\"><span class=\"pre\">namespaces</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.namespaces\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La liste des composants d’espace de noms individuels dans l’espace de noms d’instance complet du motif d’URL correspondant à l’URL. Si par exemple l’espace de noms est <code class=\"docutils literal notranslate\"><span class=\"pre\">foo:bar</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">namespaces</span></code> contiendra <code class=\"docutils literal notranslate\"><span class=\"pre\">['foo',</span> <span class=\"pre\">'bar']</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.view_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">view_name</span></span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.view_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le nom de la vue qui correspond à l’URL, y compris l’espace de noms s’il y en a un.</p>\n</dd></dl>\n\n</dd></dl>\n\n<p>Un objet <a class=\"reference internal\" href=\"#django.urls.ResolverMatch\" title=\"django.urls.ResolverMatch\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ResolverMatch</span></code></a> peut ensuite être interrogé pour fournir des informations au sujet du motif d’URL correspondant à une URL :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Resolve a URL</span>\n<span class=\"n\">match</span> <span class=\"o\">=</span> <span class=\"n\">resolve</span><span class=\"p\">(</span><span class=\"s2\">&quot;/some/path/&quot;</span><span class=\"p\">)</span>\n<span class=\"c1\"># Print the URL pattern that matches the URL</span>\n<span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">match</span><span class=\"o\">.</span><span class=\"n\">url_name</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Un objet <a class=\"reference internal\" href=\"#django.urls.ResolverMatch\" title=\"django.urls.ResolverMatch\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ResolverMatch</span></code></a> peut aussi être attribué à une triplette :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">func</span><span class=\"p\">,</span> <span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"n\">kwargs</span> <span class=\"o\">=</span> <span class=\"n\">resolve</span><span class=\"p\">(</span><span class=\"s2\">&quot;/some/path/&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>L’une des utilisations possibles de <a class=\"reference internal\" href=\"#django.urls.resolve\" title=\"django.urls.resolve\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">resolve()</span></code></a> pourrait être de tester si une vue produit une erreur <code class=\"docutils literal notranslate\"><span class=\"pre\">Http404</span></code> avant de l’utiliser comme cible de redirection :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">urllib.parse</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">urlsplit</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">resolve</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Http404</span><span class=\"p\">,</span> <span class=\"n\">HttpResponseRedirect</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">myview</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"nb\">next</span> <span class=\"o\">=</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">META</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;HTTP_REFERER&quot;</span><span class=\"p\">,</span> <span class=\"kc\">None</span><span class=\"p\">)</span> <span class=\"ow\">or</span> <span class=\"s2\">&quot;/&quot;</span>\n    <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponseRedirect</span><span class=\"p\">(</span><span class=\"nb\">next</span><span class=\"p\">)</span>\n\n    <span class=\"c1\"># modify the request and response as required, e.g. change locale</span>\n    <span class=\"c1\"># and set corresponding locale cookie</span>\n\n    <span class=\"n\">view</span><span class=\"p\">,</span> <span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"n\">kwargs</span> <span class=\"o\">=</span> <span class=\"n\">resolve</span><span class=\"p\">(</span><span class=\"n\">urlsplit</span><span class=\"p\">(</span><span class=\"nb\">next</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">path</span><span class=\"p\">)</span>\n    <span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s2\">&quot;request&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">request</span>\n    <span class=\"k\">try</span><span class=\"p\">:</span>\n        <span class=\"n\">view</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n    <span class=\"k\">except</span> <span class=\"n\">Http404</span><span class=\"p\">:</span>\n        <span class=\"k\">return</span> <span class=\"n\">HttpResponseRedirect</span><span class=\"p\">(</span><span class=\"s2\">&quot;/&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> <span class=\"n\">response</span>\n</code></pre></div>\n</section>\n<section id=\"get-script-prefix\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">get_script_prefix()</span></code><a class=\"heading-anchor\" href=\"#get-script-prefix\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.urls.get_script_prefix\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_script_prefix</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.urls.get_script_prefix\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Normalement, vous devriez toujours utiliser <a class=\"reference internal\" href=\"#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a> pour définir des URL dans votre application. Cependant, si l’application construit elle-même une partie de la hiérarchie des URL, il peut parfois être utile de produire soi-même des URL. Dans ce cas, il est nécessaire de pouvoir connaître l’URL de base du projet Django dans le contexte du serveur web (<a class=\"reference internal\" href=\"#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a> s’occupe en principe de le faire à votre place). Dans ce cas, vous pouvez appeler <code class=\"docutils literal notranslate\"><span class=\"pre\">get_script_prefix()</span></code>, qui renvoie la portion de préfixe de script des URL du projet Django. Si ce projet est placé à la racine de son serveur web, la valeur est toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;/&quot;</span></code>.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>Cette fonction <strong>ne peut pas</strong> être utilisée en dehors du cycle requête-réponse car elle compte sur des valeurs initialisées durant ce cycle.</p>\n</aside>\n</section>","rootId":"module-django.urls","toc":[{"title":"reverse()","anchor":"reverse","children":[]},{"title":"reverse_lazy()","anchor":"reverse-lazy","children":[]},{"title":"resolve()","anchor":"resolve","children":[]},{"title":"get_script_prefix()","anchor":"get-script-prefix","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/6.0/ref/"}],"prev":{"docname":"ref/unicode","title":"Données Unicode","url":"/fr/6.0/ref/unicode/"},"next":{"docname":"ref/urls","title":"Fonctions django.urls à utiliser dans les configurations d’URL","url":"/fr/6.0/ref/urls/"},"formats":{"html":"/fr/6.0/ref/urlresolvers/","markdown":"/fr/6.0/ref/urlresolvers.md","json":"/fr/6.0/ref/urlresolvers.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/urlresolvers.txt","official":"https://docs.djangoproject.com/fr/6.0/ref/urlresolvers/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}