Qual è il modo migliore per aggiungere un pulsante "annulla" a una vista generica basata su classi in Django?Come aggiungere un pulsante Annulla a DeleteView in django
Nell'esempio seguente, desidero il pulsante Annulla per portarti a success_url
senza eliminare l'oggetto. Ho provato ad aggiungere un pulsante <input type="submit" name="cancel" value="Cancel" />
al modello. Sono in grado di rilevare se questo pulsante è stato premuto ignorando il metodo post della classe AuthorDelete
, ma non riesco a capire come reindirizzare da lì.
Esempio myapp/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)
Esempio myapp/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>
(Esempi adattato dal docs)
Questi sono buoni argomenti per questo approccio. Ma per farlo dovrei aggiungere il success_url al contesto del template, quindi dovrei comunque modificare un po 'il codice Python. –
@MichaelDunn In realtà è possibile accedere all'indirizzo URL tramite {{view.success_url}}, quindi non ci dovrebbe essere codice Python extra – MatheusJardimB