<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang=""> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Generic editing views — Django 1.8.19 documentation</title> <link rel="stylesheet" href="../../_static/default.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../../', VERSION: '1.8.19', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/underscore.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> <link rel="top" title="Django 1.8.19 documentation" href="../../contents.html" /> <link rel="up" title="Built-in class-based views API" href="index.html" /> <link rel="next" title="Generic date views" href="generic-date-based.html" /> <link rel="prev" title="Generic display views" href="generic-display.html" /> <script type="text/javascript" src="../../templatebuiltins.js"></script> <script type="text/javascript"> (function($) { if (!django_template_builtins) { // templatebuiltins.js missing, do nothing. return; } $(document).ready(function() { // Hyperlink Django template tags and filters var base = "../templates/builtins.html"; if (base == "#") { // Special case for builtins.html itself base = ""; } // Tags are keywords, class '.k' $("div.highlight\\-html\\+django span.k").each(function(i, elem) { var tagname = $(elem).text(); if ($.inArray(tagname, django_template_builtins.ttags) != -1) { var fragment = tagname.replace(/_/, '-'); $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>"); } }); // Filters are functions, class '.nf' $("div.highlight\\-html\\+django span.nf").each(function(i, elem) { var filtername = $(elem).text(); if ($.inArray(filtername, django_template_builtins.tfilters) != -1) { var fragment = filtername.replace(/_/, '-'); $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>"); } }); }); })(jQuery); </script> </head> <body role="document"> <div class="document"> <div id="custom-doc" class="yui-t6"> <div id="hd"> <h1><a href="../../index.html">Django 1.8.19 documentation</a></h1> <div id="global-nav"> <a title="Home page" href="../../index.html">Home</a> | <a title="Table of contents" href="../../contents.html">Table of contents</a> | <a title="Global index" href="../../genindex.html">Index</a> | <a title="Module index" href="../../py-modindex.html">Modules</a> </div> <div class="nav"> « <a href="generic-display.html" title="Generic display views">previous</a> | <a href="../index.html" title="API Reference" accesskey="U">up</a> | <a href="generic-date-based.html" title="Generic date views">next</a> »</div> </div> <div id="bd"> <div id="yui-main"> <div class="yui-b"> <div class="yui-g" id="ref-class-based-views-generic-editing"> <div class="section" id="s-generic-editing-views"> <span id="generic-editing-views"></span><h1>Generic editing views<a class="headerlink" href="#generic-editing-views" title="Permalink to this headline">¶</a></h1> <p>The following views are described on this page and provide a foundation for editing content:</p> <ul class="simple"> <li><a class="reference internal" href="#django.views.generic.edit.FormView" title="django.views.generic.edit.FormView"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.FormView</span></code></a></li> <li><a class="reference internal" href="#django.views.generic.edit.CreateView" title="django.views.generic.edit.CreateView"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.CreateView</span></code></a></li> <li><a class="reference internal" href="#django.views.generic.edit.UpdateView" title="django.views.generic.edit.UpdateView"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.UpdateView</span></code></a></li> <li><a class="reference internal" href="#django.views.generic.edit.DeleteView" title="django.views.generic.edit.DeleteView"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.DeleteView</span></code></a></li> </ul> <div class="admonition note"> <p class="first admonition-title">Note</p> <p>Some of the examples on this page assume that an <code class="docutils literal"><span class="pre">Author</span></code> model has been defined as follows in <code class="docutils literal"><span class="pre">myapp/models.py</span></code>:</p> <div class="last highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django.core.urlresolvers</span> <span class="k">import</span> <span class="n">reverse</span> <span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">models</span> <span class="k">class</span> <span class="nc">Author</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> <span class="n">name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">200</span><span class="p">)</span> <span class="k">def</span> <span class="nf">get_absolute_url</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'author-detail'</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'pk'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">pk</span><span class="p">})</span> </pre></div> </div> </div> <div class="section" id="s-formview"> <span id="formview"></span><h2>FormView<a class="headerlink" href="#formview" title="Permalink to this headline">¶</a></h2> <dl class="class"> <dt id="django.views.generic.edit.FormView"> <em class="property">class </em><code class="descclassname">django.views.generic.edit.</code><code class="descname">FormView</code><a class="headerlink" href="#django.views.generic.edit.FormView" title="Permalink to this definition">¶</a></dt> <dd><p>A view that displays a form. On error, redisplays the form with validation errors; on success, redirects to a new URL.</p> <p><strong>Ancestors (MRO)</strong></p> <p>This view inherits methods and attributes from the following views:</p> <ul class="simple"> <li><a class="reference internal" href="mixins-simple.html#django.views.generic.base.TemplateResponseMixin" title="django.views.generic.base.TemplateResponseMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.base.TemplateResponseMixin</span></code></a></li> <li><code class="docutils literal"><span class="pre">django.views.generic.edit.BaseFormView</span></code></li> <li><a class="reference internal" href="mixins-editing.html#django.views.generic.edit.FormMixin" title="django.views.generic.edit.FormMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.FormMixin</span></code></a></li> <li><a class="reference internal" href="mixins-editing.html#django.views.generic.edit.ProcessFormView" title="django.views.generic.edit.ProcessFormView"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.ProcessFormView</span></code></a></li> <li><a class="reference internal" href="base.html#django.views.generic.base.View" title="django.views.generic.base.View"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.base.View</span></code></a></li> </ul> <p><strong>Example myapp/forms.py</strong>:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django</span> <span class="k">import</span> <span class="n">forms</span> <span class="k">class</span> <span class="nc">ContactForm</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">Form</span><span class="p">):</span> <span class="n">name</span> <span class="o">=</span> <span class="n">forms</span><span class="o">.</span><span class="n">CharField</span><span class="p">()</span> <span class="n">message</span> <span class="o">=</span> <span class="n">forms</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">widget</span><span class="o">=</span><span class="n">forms</span><span class="o">.</span><span class="n">Textarea</span><span class="p">)</span> <span class="k">def</span> <span class="nf">send_email</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># send email using the self.cleaned_data dictionary</span> <span class="k">pass</span> </pre></div> </div> <p><strong>Example myapp/views.py</strong>:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">myapp.forms</span> <span class="k">import</span> <span class="n">ContactForm</span> <span class="kn">from</span> <span class="nn">django.views.generic.edit</span> <span class="k">import</span> <span class="n">FormView</span> <span class="k">class</span> <span class="nc">ContactView</span><span class="p">(</span><span class="n">FormView</span><span class="p">):</span> <span class="n">template_name</span> <span class="o">=</span> <span class="s1">'contact.html'</span> <span class="n">form_class</span> <span class="o">=</span> <span class="n">ContactForm</span> <span class="n">success_url</span> <span class="o">=</span> <span class="s1">'/thanks/'</span> <span class="k">def</span> <span class="nf">form_valid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">form</span><span class="p">):</span> <span class="c1"># This method is called when valid form data has been POSTed.</span> <span class="c1"># It should return an HttpResponse.</span> <span class="n">form</span><span class="o">.</span><span class="n">send_email</span><span class="p">()</span> <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">ContactView</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">form_valid</span><span class="p">(</span><span class="n">form</span><span class="p">)</span> </pre></div> </div> <p><strong>Example myapp/contact.html</strong>:</p> <div class="highlight-html+django"><div class="highlight"><pre><span></span><span class="p"><</span><span class="nt">form</span> <span class="na">action</span><span class="o">=</span><span class="s">""</span> <span class="na">method</span><span class="o">=</span><span class="s">"post"</span><span class="p">></span><span class="cp">{%</span> <span class="k">csrf_token</span> <span class="cp">%}</span> <span class="cp">{{</span> <span class="nv">form.as_p</span> <span class="cp">}}</span> <span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"submit"</span> <span class="na">value</span><span class="o">=</span><span class="s">"Send message"</span> <span class="p">/></span> <span class="p"></</span><span class="nt">form</span><span class="p">></span> </pre></div> </div> </dd></dl> </div> <div class="section" id="s-createview"> <span id="createview"></span><h2>CreateView<a class="headerlink" href="#createview" title="Permalink to this headline">¶</a></h2> <dl class="class"> <dt id="django.views.generic.edit.CreateView"> <em class="property">class </em><code class="descclassname">django.views.generic.edit.</code><code class="descname">CreateView</code><a class="headerlink" href="#django.views.generic.edit.CreateView" title="Permalink to this definition">¶</a></dt> <dd><p>A view that displays a form for creating an object, redisplaying the form with validation errors (if there are any) and saving the object.</p> <p><strong>Ancestors (MRO)</strong></p> <p>This view inherits methods and attributes from the following views:</p> <ul class="simple"> <li><a class="reference internal" href="mixins-single-object.html#django.views.generic.detail.SingleObjectTemplateResponseMixin" title="django.views.generic.detail.SingleObjectTemplateResponseMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.detail.SingleObjectTemplateResponseMixin</span></code></a></li> <li><a class="reference internal" href="mixins-simple.html#django.views.generic.base.TemplateResponseMixin" title="django.views.generic.base.TemplateResponseMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.base.TemplateResponseMixin</span></code></a></li> <li><code class="docutils literal"><span class="pre">django.views.generic.edit.BaseCreateView</span></code></li> <li><a class="reference internal" href="mixins-editing.html#django.views.generic.edit.ModelFormMixin" title="django.views.generic.edit.ModelFormMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.ModelFormMixin</span></code></a></li> <li><a class="reference internal" href="mixins-editing.html#django.views.generic.edit.FormMixin" title="django.views.generic.edit.FormMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.FormMixin</span></code></a></li> <li><a class="reference internal" href="mixins-single-object.html#django.views.generic.detail.SingleObjectMixin" title="django.views.generic.detail.SingleObjectMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.detail.SingleObjectMixin</span></code></a></li> <li><a class="reference internal" href="mixins-editing.html#django.views.generic.edit.ProcessFormView" title="django.views.generic.edit.ProcessFormView"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.ProcessFormView</span></code></a></li> <li><a class="reference internal" href="base.html#django.views.generic.base.View" title="django.views.generic.base.View"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.base.View</span></code></a></li> </ul> <p><strong>Attributes</strong></p> <dl class="attribute"> <dt id="django.views.generic.edit.CreateView.template_name_suffix"> <code class="descname">template_name_suffix</code><a class="headerlink" href="#django.views.generic.edit.CreateView.template_name_suffix" title="Permalink to this definition">¶</a></dt> <dd><p>The <code class="docutils literal"><span class="pre">CreateView</span></code> page displayed to a <code class="docutils literal"><span class="pre">GET</span></code> request uses a <code class="docutils literal"><span class="pre">template_name_suffix</span></code> of <code class="docutils literal"><span class="pre">'_form'</span></code>. For example, changing this attribute to <code class="docutils literal"><span class="pre">'_create_form'</span></code> for a view creating objects for the example <code class="docutils literal"><span class="pre">Author</span></code> model would cause the default <code class="docutils literal"><span class="pre">template_name</span></code> to be <code class="docutils literal"><span class="pre">'myapp/author_create_form.html'</span></code>.</p> </dd></dl> <dl class="attribute"> <dt id="django.views.generic.edit.CreateView.object"> <code class="descname">object</code><a class="headerlink" href="#django.views.generic.edit.CreateView.object" title="Permalink to this definition">¶</a></dt> <dd><p>When using <code class="docutils literal"><span class="pre">CreateView</span></code> you have access to <code class="docutils literal"><span class="pre">self.object</span></code>, which is the object being created. If the object hasn’t been created yet, the value will be <code class="docutils literal"><span class="pre">None</span></code>.</p> </dd></dl> <p><strong>Example myapp/views.py</strong>:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django.views.generic.edit</span> <span class="k">import</span> <span class="n">CreateView</span> <span class="kn">from</span> <span class="nn">myapp.models</span> <span class="k">import</span> <span class="n">Author</span> <span class="k">class</span> <span class="nc">AuthorCreate</span><span class="p">(</span><span class="n">CreateView</span><span class="p">):</span> <span class="n">model</span> <span class="o">=</span> <span class="n">Author</span> <span class="n">fields</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'name'</span><span class="p">]</span> </pre></div> </div> <p><strong>Example myapp/author_form.html</strong>:</p> <div class="highlight-html+django"><div class="highlight"><pre><span></span><span class="p"><</span><span class="nt">form</span> <span class="na">action</span><span class="o">=</span><span class="s">""</span> <span class="na">method</span><span class="o">=</span><span class="s">"post"</span><span class="p">></span><span class="cp">{%</span> <span class="k">csrf_token</span> <span class="cp">%}</span> <span class="cp">{{</span> <span class="nv">form.as_p</span> <span class="cp">}}</span> <span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"submit"</span> <span class="na">value</span><span class="o">=</span><span class="s">"Save"</span> <span class="p">/></span> <span class="p"></</span><span class="nt">form</span><span class="p">></span> </pre></div> </div> </dd></dl> </div> <div class="section" id="s-updateview"> <span id="updateview"></span><h2>UpdateView<a class="headerlink" href="#updateview" title="Permalink to this headline">¶</a></h2> <dl class="class"> <dt id="django.views.generic.edit.UpdateView"> <em class="property">class </em><code class="descclassname">django.views.generic.edit.</code><code class="descname">UpdateView</code><a class="headerlink" href="#django.views.generic.edit.UpdateView" title="Permalink to this definition">¶</a></dt> <dd><p>A view that displays a form for editing an existing object, redisplaying the form with validation errors (if there are any) and saving changes to the object. This uses a form automatically generated from the object’s model class (unless a form class is manually specified).</p> <p><strong>Ancestors (MRO)</strong></p> <p>This view inherits methods and attributes from the following views:</p> <ul class="simple"> <li><a class="reference internal" href="mixins-single-object.html#django.views.generic.detail.SingleObjectTemplateResponseMixin" title="django.views.generic.detail.SingleObjectTemplateResponseMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.detail.SingleObjectTemplateResponseMixin</span></code></a></li> <li><a class="reference internal" href="mixins-simple.html#django.views.generic.base.TemplateResponseMixin" title="django.views.generic.base.TemplateResponseMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.base.TemplateResponseMixin</span></code></a></li> <li><code class="docutils literal"><span class="pre">django.views.generic.edit.BaseUpdateView</span></code></li> <li><a class="reference internal" href="mixins-editing.html#django.views.generic.edit.ModelFormMixin" title="django.views.generic.edit.ModelFormMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.ModelFormMixin</span></code></a></li> <li><a class="reference internal" href="mixins-editing.html#django.views.generic.edit.FormMixin" title="django.views.generic.edit.FormMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.FormMixin</span></code></a></li> <li><a class="reference internal" href="mixins-single-object.html#django.views.generic.detail.SingleObjectMixin" title="django.views.generic.detail.SingleObjectMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.detail.SingleObjectMixin</span></code></a></li> <li><a class="reference internal" href="mixins-editing.html#django.views.generic.edit.ProcessFormView" title="django.views.generic.edit.ProcessFormView"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.ProcessFormView</span></code></a></li> <li><a class="reference internal" href="base.html#django.views.generic.base.View" title="django.views.generic.base.View"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.base.View</span></code></a></li> </ul> <p><strong>Attributes</strong></p> <dl class="attribute"> <dt id="django.views.generic.edit.UpdateView.template_name_suffix"> <code class="descname">template_name_suffix</code><a class="headerlink" href="#django.views.generic.edit.UpdateView.template_name_suffix" title="Permalink to this definition">¶</a></dt> <dd><p>The <code class="docutils literal"><span class="pre">UpdateView</span></code> page displayed to a <code class="docutils literal"><span class="pre">GET</span></code> request uses a <code class="docutils literal"><span class="pre">template_name_suffix</span></code> of <code class="docutils literal"><span class="pre">'_form'</span></code>. For example, changing this attribute to <code class="docutils literal"><span class="pre">'_update_form'</span></code> for a view updating objects for the example <code class="docutils literal"><span class="pre">Author</span></code> model would cause the default <code class="docutils literal"><span class="pre">template_name</span></code> to be <code class="docutils literal"><span class="pre">'myapp/author_update_form.html'</span></code>.</p> </dd></dl> <dl class="attribute"> <dt id="django.views.generic.edit.UpdateView.object"> <code class="descname">object</code><a class="headerlink" href="#django.views.generic.edit.UpdateView.object" title="Permalink to this definition">¶</a></dt> <dd><p>When using <code class="docutils literal"><span class="pre">UpdateView</span></code> you have access to <code class="docutils literal"><span class="pre">self.object</span></code>, which is the object being updated.</p> </dd></dl> <p><strong>Example myapp/views.py</strong>:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django.views.generic.edit</span> <span class="k">import</span> <span class="n">UpdateView</span> <span class="kn">from</span> <span class="nn">myapp.models</span> <span class="k">import</span> <span class="n">Author</span> <span class="k">class</span> <span class="nc">AuthorUpdate</span><span class="p">(</span><span class="n">UpdateView</span><span class="p">):</span> <span class="n">model</span> <span class="o">=</span> <span class="n">Author</span> <span class="n">fields</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'name'</span><span class="p">]</span> <span class="n">template_name_suffix</span> <span class="o">=</span> <span class="s1">'_update_form'</span> </pre></div> </div> <p><strong>Example myapp/author_update_form.html</strong>:</p> <div class="highlight-html+django"><div class="highlight"><pre><span></span><span class="p"><</span><span class="nt">form</span> <span class="na">action</span><span class="o">=</span><span class="s">""</span> <span class="na">method</span><span class="o">=</span><span class="s">"post"</span><span class="p">></span><span class="cp">{%</span> <span class="k">csrf_token</span> <span class="cp">%}</span> <span class="cp">{{</span> <span class="nv">form.as_p</span> <span class="cp">}}</span> <span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"submit"</span> <span class="na">value</span><span class="o">=</span><span class="s">"Update"</span> <span class="p">/></span> <span class="p"></</span><span class="nt">form</span><span class="p">></span> </pre></div> </div> </dd></dl> </div> <div class="section" id="s-deleteview"> <span id="deleteview"></span><h2>DeleteView<a class="headerlink" href="#deleteview" title="Permalink to this headline">¶</a></h2> <dl class="class"> <dt id="django.views.generic.edit.DeleteView"> <em class="property">class </em><code class="descclassname">django.views.generic.edit.</code><code class="descname">DeleteView</code><a class="headerlink" href="#django.views.generic.edit.DeleteView" title="Permalink to this definition">¶</a></dt> <dd><p>A view that displays a confirmation page and deletes an existing object. The given object will only be deleted if the request method is <code class="docutils literal"><span class="pre">POST</span></code>. If this view is fetched via <code class="docutils literal"><span class="pre">GET</span></code>, it will display a confirmation page that should contain a form that POSTs to the same URL.</p> <p><strong>Ancestors (MRO)</strong></p> <p>This view inherits methods and attributes from the following views:</p> <ul class="simple"> <li><a class="reference internal" href="mixins-single-object.html#django.views.generic.detail.SingleObjectTemplateResponseMixin" title="django.views.generic.detail.SingleObjectTemplateResponseMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.detail.SingleObjectTemplateResponseMixin</span></code></a></li> <li><a class="reference internal" href="mixins-simple.html#django.views.generic.base.TemplateResponseMixin" title="django.views.generic.base.TemplateResponseMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.base.TemplateResponseMixin</span></code></a></li> <li><code class="docutils literal"><span class="pre">django.views.generic.edit.BaseDeleteView</span></code></li> <li><a class="reference internal" href="mixins-editing.html#django.views.generic.edit.DeletionMixin" title="django.views.generic.edit.DeletionMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.edit.DeletionMixin</span></code></a></li> <li><code class="docutils literal"><span class="pre">django.views.generic.detail.BaseDetailView</span></code></li> <li><a class="reference internal" href="mixins-single-object.html#django.views.generic.detail.SingleObjectMixin" title="django.views.generic.detail.SingleObjectMixin"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.detail.SingleObjectMixin</span></code></a></li> <li><a class="reference internal" href="base.html#django.views.generic.base.View" title="django.views.generic.base.View"><code class="xref py py-class docutils literal"><span class="pre">django.views.generic.base.View</span></code></a></li> </ul> <p><strong>Attributes</strong></p> <dl class="attribute"> <dt id="django.views.generic.edit.DeleteView.template_name_suffix"> <code class="descname">template_name_suffix</code><a class="headerlink" href="#django.views.generic.edit.DeleteView.template_name_suffix" title="Permalink to this definition">¶</a></dt> <dd><p>The <code class="docutils literal"><span class="pre">DeleteView</span></code> page displayed to a <code class="docutils literal"><span class="pre">GET</span></code> request uses a <code class="docutils literal"><span class="pre">template_name_suffix</span></code> of <code class="docutils literal"><span class="pre">'_confirm_delete'</span></code>. For example, changing this attribute to <code class="docutils literal"><span class="pre">'_check_delete'</span></code> for a view deleting objects for the example <code class="docutils literal"><span class="pre">Author</span></code> model would cause the default <code class="docutils literal"><span class="pre">template_name</span></code> to be <code class="docutils literal"><span class="pre">'myapp/author_check_delete.html'</span></code>.</p> </dd></dl> <p><strong>Example myapp/views.py</strong>:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">django.views.generic.edit</span> <span class="k">import</span> <span class="n">DeleteView</span> <span class="kn">from</span> <span class="nn">django.core.urlresolvers</span> <span class="k">import</span> <span class="n">reverse_lazy</span> <span class="kn">from</span> <span class="nn">myapp.models</span> <span class="k">import</span> <span class="n">Author</span> <span class="k">class</span> <span class="nc">AuthorDelete</span><span class="p">(</span><span class="n">DeleteView</span><span class="p">):</span> <span class="n">model</span> <span class="o">=</span> <span class="n">Author</span> <span class="n">success_url</span> <span class="o">=</span> <span class="n">reverse_lazy</span><span class="p">(</span><span class="s1">'author-list'</span><span class="p">)</span> </pre></div> </div> <p><strong>Example myapp/author_confirm_delete.html</strong>:</p> <div class="highlight-html+django"><div class="highlight"><pre><span></span><span class="p"><</span><span class="nt">form</span> <span class="na">action</span><span class="o">=</span><span class="s">""</span> <span class="na">method</span><span class="o">=</span><span class="s">"post"</span><span class="p">></span><span class="cp">{%</span> <span class="k">csrf_token</span> <span class="cp">%}</span> <span class="p"><</span><span class="nt">p</span><span class="p">></span>Are you sure you want to delete "<span class="cp">{{</span> <span class="nv">object</span> <span class="cp">}}</span>"?<span class="p"></</span><span class="nt">p</span><span class="p">></span> <span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"submit"</span> <span class="na">value</span><span class="o">=</span><span class="s">"Confirm"</span> <span class="p">/></span> <span class="p"></</span><span class="nt">form</span><span class="p">></span> </pre></div> </div> </dd></dl> </div> </div> </div> </div> </div> <div class="yui-b" id="sidebar"> <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="sphinxsidebarwrapper"> <h3><a href="../../contents.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">Generic editing views</a><ul> <li><a class="reference internal" href="#formview">FormView</a></li> <li><a class="reference internal" href="#createview">CreateView</a></li> <li><a class="reference internal" href="#updateview">UpdateView</a></li> <li><a class="reference internal" href="#deleteview">DeleteView</a></li> </ul> </li> </ul> <h3>Browse</h3> <ul> <li>Prev: <a href="generic-display.html">Generic display views</a></li> <li>Next: <a href="generic-date-based.html">Generic date views</a></li> </ul> <h3>You are here:</h3> <ul> <li> <a href="../../index.html">Django 1.8.19 documentation</a> <ul><li><a href="../index.html">API Reference</a> <ul><li><a href="index.html">Built-in class-based views API</a> <ul><li>Generic editing views</li></ul> </li></ul></li></ul> </li> </ul> <div role="note" aria-label="source link"> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../../_sources/ref/class-based-views/generic-editing.txt" rel="nofollow">Show Source</a></li> </ul> </div> <div id="searchbox" style="display: none" role="search"> <h3>Quick search</h3> <form class="search" action="../../search.html" method="get"> <div><input type="text" name="q" /></div> <div><input type="submit" value="Go" /></div> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <h3>Last update:</h3> <p class="topless">Mar 10, 2018</p> </div> </div> <div id="ft"> <div class="nav"> « <a href="generic-display.html" title="Generic display views">previous</a> | <a href="../index.html" title="API Reference" accesskey="U">up</a> | <a href="generic-date-based.html" title="Generic date views">next</a> »</div> </div> </div> <div class="clearer"></div> </div> </body> </html>