<p>您不需要手工编写这些视图,因为django附带了这些视图,它们被称为<a href="https://docs.djangoproject.com/en/dev/ref/class-based-views/generic-editing/" rel="nofollow">generic views</a>。</p>
<p>例如,贡献的删除视图执行以下操作:</p>
<ol>
<li>要求用户确认是否确实要删除对象。</li>
<li>删除对象。</li>
<li>重定向到视图。</li>
</ol>
<p>以下是您将如何使用它:</p>
<p>在您的<code>views.py</code>中:</p>
<pre><code>from django.views.generic.edit import DeleteView # this is the generic view
from django.core.urlresolvers import reverse_lazy
from yourapp.models import Note
class NoteDelete(DeleteView):
model = Note
success_url = reverse_lazy('all_notes') # This is where this view will
# redirect the user
template_name = 'delete_note.html'
</code></pre>
<p>创建<code>delete_note.html</code>模板,该模板只有以下内容:</p>
<pre><code>Hey, are you sure you want to delete {{ object.title }}?
<form method="post">
{% csrf_token %}
<button type="submit" class="btn btn-danger">Yeap, I'm sure.</button>
</form>
</code></pre>
<p>在您的<code>urls.py</code>中:</p>
<pre><code>urlpatterns = patterns('',
url(r'^all/$', 'note.views.notes', name='all_notes'), # Giving your urls a name
# makes it easier to refer
# to them later
url(r'^get/(?P<note_id>\d+)/$', 'note.views.note'), #
url(r'^language/(?P<language>[a-z\-]+)/$', 'note.views.language'), #
url(r'^create/$', 'note.views.create'),
url(r'^delete/(?P<pk>\d+)/$', 'note.views.NoteDelete.as_view()', name="delete_note"),
url(r'^search/$', 'note.views.search_titles'),
)
</code></pre>
<p>现在,假设您想要显示一个链接来删除一个注释,比如在您的<code>index.html</code>:</p>
<pre><code>Here are all my notes:
<ul>
{% for note in all_notes %}
<li>{{ note.title }} - <a href="{% url 'delete_note' pk=note.pk %}">Delete</a></li>
{% endfor %}
</ul>
</code></pre>