Django: Supprimer la vue avec confirmation Javascript sans rediriger vers le modèle
Avarika Giri
J'ai un modèle que je peux supprimer en utilisant Django DeleteView. Je veux que les données soient supprimées après avoir utilisé le popup Javascript.
Views.py
class ObjectNameDeleteView(DeleteView):
model = ObjectName
form_class = PostObjectName
success_url = 'http://localhost:8000/impact/displayobjects/'
DisplayObjects.html
<form method="POST" action="{% url 'person_delete' obj.pk %}">
{% csrf_token %}
<a href="{% url 'person_delete' obj.pk %}">
<button type="submit" class="btn btn-danger" onClick="deleteFunction()">Delete</button></a>
</form>
<script>
function deleteFunction(e) {
if(!confirm("Are you sure you want to delete?")){
e.preventDefault();
}
}
</script>
Après avoir cliqué sur le bouton Supprimer, il y a une erreur:
La vérification CSRF a échoué. Demande abandonnée.
Comment puis-je faire fonctionner cela?
ThunderHorn
retirer type='submit'
du bouton
ajouter une classe ou un identifiant au formulaire, puis dans l' js
ajout$('#your-form-id').submit();
<form id='person-delete' method="POST" action="{% url 'person_delete' obj.pk %}">
{% csrf_token %}
<a href="{% url 'person_delete' obj.pk %}">
<button class="btn btn-danger" onClick="deleteFunction()">Delete</button></a>
</form>
function deleteFunction(e) {
if(!confirm("Are you sure you want to delete?")){
e.preventDefault();
}else{
$('#person-delete').submit();
}
}
Votre vue est une classe que vous devez ajouter @method_decorator(csrf_exempt)
avant votre logique dans votreObjectNameDeleteView()
class ObjectNameDeleteView(View):
@method_decorator(csrf_exempt)
#then your logic