{"title":"Vues de base","version":"2.1","locale":"fr","docname":"ref/class-based-views/base","url":"/fr/2.1/ref/class-based-views/base/","canonical":"https://djangodocs.dev/fr/2.1/ref/class-based-views/base/","summary":"Les trois classes suivantes fournissent la plupart des fonctionnalités nécessaires à la création de vues Django. Vous pouvez les considérer comme des vues parentes…","html":"<h1>Vues de base<a class=\"heading-anchor\" href=\"#base-views\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Les trois classes suivantes fournissent la plupart des fonctionnalités nécessaires à la création de vues Django. Vous pouvez les considérer comme des vues <em>parentes</em> qui peuvent être utilisées telles quelles ou comme classe parente. Elles ne contiennent pas toutes les fonctionnalités requises par les projets, c’est pour cela qu’il y a des vues basées sur des classes de type <code class=\"docutils literal notranslate\"><span class=\"pre\">Mixin</span></code> et d’autres génériques.</p>\n<p>La plupart des vues fondées sur les classes intégrées à Django héritent d’autres vues fondées sur les classes ou de différentes classes mixin. En raison de l’importance de cette chaîne d’héritage, les classes parentes sont documentées sous la section <strong>Ancêtres (MRO)</strong>. MRO est un acronyme pour Method Resolution Order (ordre de résolution des méthodes).</p>\n<section id=\"view\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">View</span></code><a class=\"heading-anchor\" href=\"#view\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.generic.base.</span></span><span class=\"sig-name descname\"><span class=\"pre\">View</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La principale vue basée sur des classes. Toutes les autres héritent de cette classe de base. Il ne s’agit pas strictement d’une vue générique et elle peut donc être importée à partir de <code class=\"docutils literal notranslate\"><span class=\"pre\">django.views</span></code>.</p>\n<p><strong>Index des méthodes</strong></p>\n<ol class=\"arabic simple\">\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.dispatch\" title=\"django.views.generic.base.View.dispatch\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dispatch()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.http_method_not_allowed\" title=\"django.views.generic.base.View.http_method_not_allowed\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">http_method_not_allowed()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.options\" title=\"django.views.generic.base.View.options\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">options()</span></code></a></p></li>\n</ol>\n<p><strong>Exemple de fichier views.py</strong>:</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.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span>\n<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<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyView</span><span class=\"p\">(</span><span class=\"n\">View</span><span class=\"p\">):</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</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\">return</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"s1\">&#39;Hello, World!&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><strong>Exemple de fichier urls.py</strong>:</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\">path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">MyView</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;mine/&#39;</span><span class=\"p\">,</span> <span class=\"n\">MyView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;my-view&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p><strong>Attributs</strong></p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View.http_method_names\">\n<span class=\"sig-name descname\"><span class=\"pre\">http_method_names</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View.http_method_names\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La liste des noms de méthodes HTTP que cette vue accepte.</p>\n<p>Valeur par défaut :</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=\"p\">[</span><span class=\"s1\">&#39;get&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;post&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;put&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;patch&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;delete&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;head&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;options&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;trace&#39;</span><span class=\"p\">]</span>\n</code></pre></div>\n</dd></dl>\n\n<p><strong>Méthodes</strong></p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View.as_view\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">classmethod</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">as_view</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">initkwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View.as_view\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une vue exécutable acceptant une requête et renvoyant une réponse :</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\">response</span> <span class=\"o\">=</span> <span class=\"n\">MyView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">()(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>La vue renvoyée possède les attributs <code class=\"docutils literal notranslate\"><span class=\"pre\">view_class</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">view_initkwargs</span></code>.</p>\n<p>Lorsque la vue est appelée pendant le cycle requête/réponse, l’attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> de la vue correspond à l’objet <a class=\"reference internal\" href=\"/fr/2.1/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a>. Tout paramètre positionnel ou nommé <a class=\"reference internal\" href=\"/fr/2.1/topics/http/urls/#how-django-processes-a-request\"><span class=\"std std-ref\">capturé à partir du motif d’URL</span></a> est accessible par les attributs <code class=\"docutils literal notranslate\"><span class=\"pre\">args</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">kwargs</span></code> de la vue. Puis, <a class=\"reference internal\" href=\"#django.views.generic.base.View.dispatch\" title=\"django.views.generic.base.View.dispatch\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dispatch()</span></code></a> est appelée.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View.dispatch\">\n<span class=\"sig-name descname\"><span class=\"pre\">dispatch</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View.dispatch\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La partie <code class=\"docutils literal notranslate\"><span class=\"pre\">view</span></code> de la vue, la méthode qui accepte un paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> ainsi que d’autres paramètres et qui renvoie une réponse HTTP.</p>\n<p>L’implémentation par défaut examine la méthode HTTP et essaie de déléguer l’exécution à une méthode qui correspond à la méthode HTTP ; une requête <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code> sera déléguée à <code class=\"docutils literal notranslate\"><span class=\"pre\">get()</span></code>, une requête <code class=\"docutils literal notranslate\"><span class=\"pre\">POST</span></code> à <code class=\"docutils literal notranslate\"><span class=\"pre\">post()</span></code>, et ainsi de suite.</p>\n<p>Par défaut, une requête <code class=\"docutils literal notranslate\"><span class=\"pre\">HEAD</span></code> sera déléguée à <code class=\"docutils literal notranslate\"><span class=\"pre\">get()</span></code>. Si vous avez besoin de traiter différemment les requêtes <code class=\"docutils literal notranslate\"><span class=\"pre\">HEAD</span></code>, vous pouvez surcharger la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">head()</span></code>. Voir l’exemple dans <a class=\"reference internal\" href=\"/fr/2.1/topics/class-based-views/#supporting-other-http-methods\"><span class=\"std std-ref\">Prise en charge de méthodes HTTP alternatives</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View.http_method_not_allowed\">\n<span class=\"sig-name descname\"><span class=\"pre\">http_method_not_allowed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View.http_method_not_allowed\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Si la vue a été appelée par une méthode HTTP qu’elle ne prend pas en charge, c’est cette méthode qui sera appelée.</p>\n<p>L’implémentation par défaut renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponseNotAllowed</span></code> avec une liste de méthodes autorisées en texte brut.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View.options\">\n<span class=\"sig-name descname\"><span class=\"pre\">options</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View.options\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Traite la réponse aux requêtes du verbe HTTP OPTIONS. Renvoie une réponse avec l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Allow</span></code> contenant une liste des noms de méthodes HTTP autorisées pour la vue.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"templateview\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateView</span></code><a class=\"heading-anchor\" href=\"#templateview\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.TemplateView\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.generic.base.</span></span><span class=\"sig-name descname\"><span class=\"pre\">TemplateView</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.TemplateView\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Effectue le rendu d’un gabarit donné, avec le contexte contenant les paramètres capturés dans l’URL.</p>\n<p><strong>Ancêtres (MRO)</strong></p>\n<p>Cette vue hérite des méthodes et des attributs des vues suivantes :</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/fr/2.1/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin\" title=\"django.views.generic.base.TemplateResponseMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.base.TemplateResponseMixin</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/fr/2.1/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin\" title=\"django.views.generic.base.ContextMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.base.ContextMixin</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View\" title=\"django.views.generic.base.View\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.base.View</span></code></a></p></li>\n</ul>\n<p><strong>Index des méthodes</strong></p>\n<ol class=\"arabic simple\">\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.dispatch\" title=\"django.views.generic.base.View.dispatch\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dispatch()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.http_method_not_allowed\" title=\"django.views.generic.base.View.http_method_not_allowed\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">http_method_not_allowed()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/fr/2.1/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin.get_context_data\" title=\"django.views.generic.base.ContextMixin.get_context_data\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_context_data()</span></code></a></p></li>\n</ol>\n<p><strong>Exemple de fichier views.py</strong>:</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.views.generic.base</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TemplateView</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">articles.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Article</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">HomePageView</span><span class=\"p\">(</span><span class=\"n\">TemplateView</span><span class=\"p\">):</span>\n\n    <span class=\"n\">template_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;home.html&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_context_data</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"n\">context</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_context_data</span><span class=\"p\">(</span><span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n        <span class=\"n\">context</span><span class=\"p\">[</span><span class=\"s1\">&#39;latest_articles&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">Article</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()[:</span><span class=\"mi\">5</span><span class=\"p\">]</span>\n        <span class=\"k\">return</span> <span class=\"n\">context</span>\n</code></pre></div>\n<p><strong>Exemple de fichier urls.py</strong>:</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\">path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HomePageView</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;&#39;</span><span class=\"p\">,</span> <span class=\"n\">HomePageView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;home&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p><strong>Contexte</strong></p>\n<ul class=\"simple\">\n<li><p>Complété (via <a class=\"reference internal\" href=\"/fr/2.1/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin\" title=\"django.views.generic.base.ContextMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ContextMixin</span></code></a>) par les paramètres nommés capturés par le motif d’URL qui a servi à appeler la vue.</p></li>\n<li><p>Il est aussi possible d’ajouter du contexte en utilisant le paramètre nommé <a class=\"reference internal\" href=\"/fr/2.1/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin.extra_context\" title=\"django.views.generic.base.ContextMixin.extra_context\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">extra_context</span></code></a> de <a class=\"reference internal\" href=\"#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>.</p></li>\n</ul>\n</dd></dl>\n\n</section>\n<section id=\"redirectview\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">RedirectView</span></code><a class=\"heading-anchor\" href=\"#redirectview\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.RedirectView\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.generic.base.</span></span><span class=\"sig-name descname\"><span class=\"pre\">RedirectView</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.RedirectView\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Redirection vers l’URL donnée.</p>\n<p>L’URL donnée peut contenir des chaînes de format de type dictionnaire, qui seront interpolées par les paramètres capturés dans l’URL. Comme l’interpolation par mot-clé a <em>toujours</em> lieu (même si aucun paramètre n’est capturé), tout caractère <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;%&quot;</span></code> dans l’URL doit être doublé (<code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;%%&quot;</span></code>) de sorte que Python convertit ces séquences en caractère pourcent unique lors de l’affichage.</p>\n<p>Si l’URL indiquée vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, Django renvoie une réponse <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponseGone</span></code> (410).</p>\n<p><strong>Ancêtres (MRO)</strong></p>\n<p>Cette vue hérite des méthodes et des attributs de la vue suivante :</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View\" title=\"django.views.generic.base.View\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.base.View</span></code></a></p></li>\n</ul>\n<p><strong>Index des méthodes</strong></p>\n<ol class=\"arabic simple\">\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.dispatch\" title=\"django.views.generic.base.View.dispatch\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dispatch()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.http_method_not_allowed\" title=\"django.views.generic.base.View.http_method_not_allowed\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">http_method_not_allowed()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.RedirectView.get_redirect_url\" title=\"django.views.generic.base.RedirectView.get_redirect_url\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_redirect_url()</span></code></a></p></li>\n</ol>\n<p><strong>Exemple de fichier views.py</strong>:</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.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">get_object_or_404</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.generic.base</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RedirectView</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">articles.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Article</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleCounterRedirectView</span><span class=\"p\">(</span><span class=\"n\">RedirectView</span><span class=\"p\">):</span>\n\n    <span class=\"n\">permanent</span> <span class=\"o\">=</span> <span class=\"kc\">False</span>\n    <span class=\"n\">query_string</span> <span class=\"o\">=</span> <span class=\"kc\">True</span>\n    <span class=\"n\">pattern_name</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;article-detail&#39;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_redirect_url</span><span class=\"p\">(</span><span class=\"bp\">self</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=\"n\">article</span> <span class=\"o\">=</span> <span class=\"n\">get_object_or_404</span><span class=\"p\">(</span><span class=\"n\">Article</span><span class=\"p\">,</span> <span class=\"n\">pk</span><span class=\"o\">=</span><span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s1\">&#39;pk&#39;</span><span class=\"p\">])</span>\n        <span class=\"n\">article</span><span class=\"o\">.</span><span class=\"n\">update_counter</span><span class=\"p\">()</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_redirect_url</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</code></pre></div>\n<p><strong>Exemple de fichier urls.py</strong>:</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\">path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.generic.base</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RedirectView</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">article.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ArticleCounterRedirectView</span><span class=\"p\">,</span> <span class=\"n\">ArticleDetail</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;counter/&lt;int:pk&gt;/&#39;</span><span class=\"p\">,</span> <span class=\"n\">ArticleCounterRedirectView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;article-counter&#39;</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;details/&lt;int:pk&gt;/&#39;</span><span class=\"p\">,</span> <span class=\"n\">ArticleDetail</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;article-detail&#39;</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;go-to-django/&#39;</span><span class=\"p\">,</span> <span class=\"n\">RedirectView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(</span><span class=\"n\">url</span><span class=\"o\">=</span><span class=\"s1\">&#39;https://djangoproject.com&#39;</span><span class=\"p\">),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;go-to-django&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p><strong>Attributs</strong></p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.RedirectView.url\">\n<span class=\"sig-name descname\"><span class=\"pre\">url</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.RedirectView.url\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>L’URL vers laquelle rediriger, sous forme textuelle. Ou <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> pour générer une erreur HTTP 410 (Gone).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.RedirectView.pattern_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">pattern_name</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.RedirectView.pattern_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 vers lequel rediriger. La résolution inverse est effectuée à l’aide des mêmes paramètres positionnels et nommés (args/kwargs) que ceux transmis à cette vue.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.RedirectView.permanent\">\n<span class=\"sig-name descname\"><span class=\"pre\">permanent</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.RedirectView.permanent\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Indique si la redirection doit être permanente. La seule différence est le code de statut HTTP qui est renvoyé. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, la redirection produit un code de statut 301. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, la redirection produit un code de statut 302. Par défaut, <code class=\"docutils literal notranslate\"><span class=\"pre\">permanent</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.RedirectView.query_string\">\n<span class=\"sig-name descname\"><span class=\"pre\">query_string</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.RedirectView.query_string\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Indique s’il faut transférer la chaîne de requête GET vers le nouvel emplacement. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, la chaîne de requête est ajoutée à l’URL. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, la chaîne de requête n’est pas considérée. Par défaut, <code class=\"docutils literal notranslate\"><span class=\"pre\">query_string</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n</dd></dl>\n\n<p><strong>Méthodes</strong></p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.RedirectView.get_redirect_url\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_redirect_url</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.RedirectView.get_redirect_url\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Construit l’URL cible de la redirection.</p>\n<p>L’implémentation par défaut utilise <a class=\"reference internal\" href=\"#django.views.generic.base.RedirectView.url\" title=\"django.views.generic.base.RedirectView.url\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">url</span></code></a> comme chaîne de départ et effectue la substitution des paramètres nommés <code class=\"docutils literal notranslate\"><span class=\"pre\">%</span></code> dans cette chaîne en utilisant les groupes nommés capturés dans l’URL.</p>\n<p>Si <a class=\"reference internal\" href=\"#django.views.generic.base.RedirectView.url\" title=\"django.views.generic.base.RedirectView.url\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">url</span></code></a> n’est pas défini, <code class=\"docutils literal notranslate\"><span class=\"pre\">get_redirect_url()</span></code> essaie de résoudre <a class=\"reference internal\" href=\"#django.views.generic.base.RedirectView.pattern_name\" title=\"django.views.generic.base.RedirectView.pattern_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">pattern_name</span></code></a> en utilisant les éléments capturés dans l’URL (aussi bien les groupes nommés qu’anonymes).</p>\n<p>Si la requête contenait une chaîne de paramètres <a class=\"reference internal\" href=\"#django.views.generic.base.RedirectView.query_string\" title=\"django.views.generic.base.RedirectView.query_string\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">query_string</span></code></a>, celle-ci est aussi ajoutée à l’URL générée. Les sous-classes peuvent implémenter le comportement qu’elles souhaitent pour autant que la méthode renvoie une chaîne d’URL prête pour la redirection.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>","rootId":"base-views","toc":[{"title":"View","anchor":"view","children":[]},{"title":"TemplateView","anchor":"templateview","children":[]},{"title":"RedirectView","anchor":"redirectview","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/2.1/ref/"},{"docname":"ref/class-based-views/index","title":"API des vues intégrées fondées sur les classes","url":"/fr/2.1/ref/class-based-views/"}],"prev":{"docname":"ref/class-based-views/index","title":"API des vues intégrées fondées sur les classes","url":"/fr/2.1/ref/class-based-views/"},"next":{"docname":"ref/class-based-views/generic-display","title":"Vues génériques d’affichage","url":"/fr/2.1/ref/class-based-views/generic-display/"},"formats":{"html":"/fr/2.1/ref/class-based-views/base/","markdown":"/fr/2.1/ref/class-based-views/base.md","json":"/fr/2.1/ref/class-based-views/base.json"},"source":"https://github.com/django/django/blob/stable/2.1.x/docs/ref/class-based-views/base.txt","official":"https://docs.djangoproject.com/fr/2.1/ref/class-based-views/base/","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","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}