Jaki jest najlepszy sposób dodania przycisku "anuluj" do ogólnego widoku opartego na klasach w Django?Jak dodać przycisk anulowania do DeleteView w django
W poniższym przykładzie chciałbym, aby przycisk anulowania przeszedł do success_url
bez usuwania obiektu. Próbowałem dodać do szablonu przycisk <input type="submit" name="cancel" value="Cancel" />
. Mogę wykryć, czy przycisk ten został naciśnięty przez przesłonięcie metody post klasy AuthorDelete
, ale nie mogę się dowiedzieć, jak przekierować stamtąd.
Przykład MojaApl/views.py:
from django.views.generic.edit import DeleteView
from django.core.urlresolvers import reverse_lazy
from myapp.models import Author
class AuthorDelete(DeleteView):
model = Author
success_url = reverse_lazy('author-list')
def post(self, request, *args, **kwargs):
if request.POST["cancel"]:
return ### return what? Can I redirect from here?
else:
return super(AuthorDelete, self).post(request, *args, **kwargs)
Przykład MojaApl/author_confirm_delete.html:
<form action="" method="post">{% csrf_token %}
<p>Are you sure you want to delete "{{ object }}"?</p>
<input type="submit" value="Confirm" />
<input type="submit" name="cancel" value="Cancel" />
</form>
(Przykłady Adaptacja docs)
To są dobre argumenty przemawiające za tym podejściem. Ale aby to zrobić, musiałbym dodać success_url do kontekstu szablonu, więc wciąż musiałbym trochę zmodyfikować kod Pythona. –
@MichaelDunn Właściwie możesz uzyskać dostęp do adresu URL przez {{view.success_url}}, więc nie powinno być dodatkowego kodu Pythona – MatheusJardimB