2010-07-02 12 views
0

Dans mon projet, je dois ajouter des fonctionnalités pour supprimer des amis de la liste des utilisateurs. En cliquant sur « Supprimer ami » lien, le point de vue suivant est chargé (avec le friends.id envoyé):Popup en attente d'une action de l'utilisateur dans Django

def delete_friend(request, id): 
    friend = get_object_or_404(Friend, id=id) 
    friend.delete() 
    return HttpResponseRedirect(reverse('user_profile',)) 

Maintenant, je voudrais ajouter une fenêtre contextuelle (qui apparaît lorsque l'utilisateur clique sur le lien de suppression) demande si l'utilisateur est sûr d'effectuer l'opération. Où dois-je commencer et comment? Je devine, qu'en utilisant jquery je devrais créer une popup après avoir cliqué sur le lien. Alors, probablement, de la magie Ajax devrait arriver. Mais comment gérer cela? J'ai une connaissance intermédiaire de jQ mais je n'ai jamais utilisé ajax auparavant, et je n'ai trouvé aucun tutoriel utile concernant django-ajax.

MISE À JOUR: Je suis sûr qu'il ya des erreurs ici, mais ce que je pensais:
- après avoir cliqué sur « Supprimer ami » JQ ouvre une fenêtre contextuelle
- bouton si le POUP « OK » est cliqué, nous exécuter un script (je pense en quelque sorte besoin de transférer mon friend's.id à cette fonction):

$(".friend_remove_ok").click(
    function(){ 
     // let's say id is my friend.id 
     $.ajax({ 
      type: "GET", 
     url: "/user/delete_friend/"+id+"/", 
     dataType: "json", 
     success: function(data){ 
      $("#friend_"+id).fadeOut(300, function() { $("#friend_"+_id).remove() });      
       } 
      }); 
     } 
    ); 

- il dirige notre vue delete_friend

Est-ce une bonne ou suis-je complètement mal à ma façon de penser ?

Répondre

2

L'idée principale est qu'un clic sur le bouton de suppression déclenche une méthode javascript ouvrant une boîte de dialogue de confirmation. Une fois que l'utilisateur a confirmé que vous pouvez faire plusieurs choses:

  • vous pouvez rediriger le navigateur vers l'URL suppression (vue)
  • vous pouvez utiliser XMLHttpRequest ($ .ajax jQuery) pour appeler l'URL de suppression puis actualiser le navigateur
  • vous pouvez utiliser XMLHttpRequest pour appeler l'URL suppression puis utilisez l'API DOM pour supprimer l'élément de la liste

Il est également recommandé que des mesures modifiant le modèle ne doit pas se faire sur un GET demande, mea ning que vous devez appeler votre URL de suppression en utilisant POST ou DELETE