DeleteView и success_url
Подтверждайте удаление и перенаправляйте пользователя
«DeleteView и success_url» — бесплатный урок Django Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Django Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Django Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Removing Records Safely
Sometimes data has to go. DeleteView handles removing a record, with a confirmation step built in. 🗑️
Meet DeleteView
DeleteView loads one object by its pk and prepares to delete it once the user confirms.
from django.views.generic import DeleteView
class PostDelete(DeleteView):
model = PostWhy Confirmation Matters
Deleting is permanent, so DeleteView shows a confirmation page on GET before anything is removed.
The Confirm Template
By default DeleteView looks for app/model_confirm_delete.html, like post_confirm_delete.html.
The Confirmation Form
The confirm page posts back to the same URL, and that POST request is what actually triggers the delete.
<form method="post">{% csrf_token %}
<p>Delete {{ object }}?</p>
<button>Yes, delete</button>
</form>Where success_url Comes In
After deleting, the user needs somewhere to go. success_url sets that destination explicitly.
from django.urls import reverse_lazy
class PostDelete(DeleteView):
model = Post
success_url = reverse_lazy("post_list")Why reverse_lazy Here
Use reverse_lazy, not reverse, because URLs are not ready when the class body is first read at import time.
reverse vs reverse_lazy
reverse resolves a URL immediately, while reverse_lazy waits until the value is actually needed.
Wiring the Delete URL
The delete URL captures a pk so DeleteView knows which record to remove.
path("<int:pk>/delete/", PostDelete.as_view()),Linking to Delete
From a detail page, link to delete using the url tag and the object pk so the right record is targeted.
<a href="{% url 'post_delete' object.pk %}">Delete</a>Safe by Design
The GET confirm plus POST delete pattern means no record vanishes from a stray click or a crawler. ✅
Quick Check
What does success_url control in a DeleteView?
Recap: Deleting Records
You used DeleteView with a GET confirm and POST delete, then sent users onward with success_url and reverse_lazy. 🎉
Часто задаваемые вопросы
Урок «DeleteView и success_url» бесплатный?
Да — полный текст урока «DeleteView и success_url» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Django Academy, подпишись на CoddyKit PRO. Курс Django Academy содержит 4 уроков всего.
Чему я научусь в уроке «DeleteView и success_url»?
Подтверждайте удаление и перенаправляйте пользователя Ты практикуешь Django Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Django Academy?
Предыдущий опыт не требуется. Django Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «DeleteView и success_url»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Django Academy?
Да. Каждый урок Django Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- ListView и DetailView
- CreateView и UpdateView
- DeleteView и success_url
- Переопределение get_queryset и шаблоны