DeleteView i success_url
Potwierdzanie usunięcia i przekierowanie po nim
DeleteView i success_url to bezpłatna lekcja Django Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Django Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Django Academy zawiera 4 lekcji w sumie.
Bezpieczne usuwanie rekordów
Czasami dane trzeba usunąć. DeleteView obsługuje usuwanie rekordu i ma wbudowany etap potwierdzenia. 🗑️
Poznajemy DeleteView
DeleteView ładuje jeden obiekt na podstawie jego pk i przygotowuje go do usunięcia po potwierdzeniu przez użytkownika.
from django.views.generic import DeleteView
class PostDelete(DeleteView):
model = PostDlaczego potwierdzenie ma znaczenie
Usunięcie jest trwałe, dlatego DeleteView podczas żądania GET wyświetla stronę potwierdzenia, zanim cokolwiek zostanie usunięte.
Szablon potwierdzenia
Domyślnie DeleteView szuka pliku app/model_confirm_delete.html, podobnie jak post_confirm_delete.html.
Formularz potwierdzenia
Strona potwierdzenia wysyła dane z powrotem pod ten sam adres URL, a właśnie żądanie POST faktycznie uruchamia usuwanie.
<form method="post">{% csrf_token %}
<p>Delete {{ object }}?</p>
<button>Yes, delete</button>
</form>Rola success_url
Po usunięciu użytkownik musi zostać gdzieś przekierowany. success_url jawnie określa miejsce docelowe.
from django.urls import reverse_lazy
class PostDelete(DeleteView):
model = Post
success_url = reverse_lazy("post_list")Dlaczego tutaj reverse_lazy
Należy użyć reverse_lazy, a nie reverse, ponieważ adresy URL nie są jeszcze gotowe, gdy ciało klasy jest po raz pierwszy odczytywane podczas importu.
reverse a reverse_lazy
reverse rozwiązuje adres URL natychmiast, natomiast reverse_lazy czeka, aż wartość będzie rzeczywiście potrzebna.
Podłączanie adresu URL usuwania
Adres URL usuwania przechwytuje wartość pk, aby DeleteView wiedział, który rekord usunąć.
path("<int:pk>/delete/", PostDelete.as_view()),Odsyłacz do usuwania
Ze strony szczegółów można utworzyć odsyłacz do usuwania za pomocą znacznika url i pk obiektu, aby wskazać właściwy rekord.
<a href="{% url 'post_delete' object.pk %}">Delete</a>Bezpieczeństwo dzięki projektowi
Połączenie potwierdzenia GET z usuwaniem POST oznacza, że żaden rekord nie zniknie wskutek przypadkowego kliknięcia ani działania robota indeksującego. ✅
Szybkie sprawdzenie
Co określa success_url w DeleteView?
Podsumowanie: usuwanie rekordów
Użył(a) Pan/Pani DeleteView z potwierdzeniem GET i usuwaniem POST, a następnie przekierował(a) użytkowników dalej za pomocą success_url i reverse_lazy. 🎉
Ucz się Python dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „DeleteView i success_url” jest bezpłatna?
Tak — pełny tekst „DeleteView i success_url” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Django Academy, przejdź na CoddyKit PRO. Kurs Django Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „DeleteView i success_url”?
Potwierdzanie usunięcia i przekierowanie po nim Ćwiczysz Django Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Django Academy?
Nie wymagamy żadnego doświadczenia. Django Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „DeleteView i success_url”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Django Academy?
Tak. Każda lekcja Django Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- ListView i DetailView
- CreateView i UpdateView
- DeleteView i success_url
- Nadpisywanie get_queryset i Templates