IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Lier 2 champs en autocompletion


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Lier 2 champs en autocompletion
    Bonjour à tous
    Je souhaiterais utiliser le même principe que sur ce site :
    http://siddh.developpez.com/articles/ajax/ plus précisément dans "4.Allez plus loin" la partie "A. Listes liées".
    Je voudrais l'intégrer dans mon application Django mais je ne vois pas comment faire.
    Savez quelle est la démarche à suivre ou sur quelle site je pourrais avoir des info s'il vous plait ?
    Je vous remercie d'avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Par défaut
    Bonjour,
    J'imagine qu'il suffit de premplacer le script PHP par une vue et un template associé :

    Le template ressemblerait à quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <select>
    {% for book in books %}
    <option value="{{book.id}}">{{book.title}}</option>
    {% endfor %}
    </select>
    et la vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    def ajaxLivre(request):
       books = Livre.objects.filter(author_id = request.POST['authorId'])
       t =     t = loader.get_template('app/ajaxLivre.html')
        c = Context({
            'books': books,
        })
        return HttpResponse(t.render(c))
    Aucune garantie sur le fonctionnement du code...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je te remercie pour ton aide Alexis.M seulement ça ne suffit pas !
    En fait le problème, j'imagine, vient de la fonction go() où l'on trouve la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("POST","ajaxLivre.php",true);
    En php il n'y a pas de problème vu que le traitement se fait dans le fichier ajaxLivre.php.
    Maintenant comment je pourrais lui dire d'aller dans mon fichier views.py et traiter la fonction correspondante ?

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Par défaut
    il suffit d'associer une url à la vue dans url.py et d'appeler cette url dans le Javascript.

    Quelquechose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    urlpatterns = patterns('',
    ...
        (r'^app/ajaxLivres', axaLivres)),
    )
    et tu l'appelles avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xhr.open("POST","ajaxLivre",true);
    Si ça t'amuses, tu peux même faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    urlpatterns = patterns('',
        (r'^app/ajaxLivres.php', axaLivres)),
    )
    pour mimer un appel à un script PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Yes ça marche j'avais une erreur dans mon fichier views.py
    En fait j'ai donné un nom à mon url et je l'appelle comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("POST","{% url test %}",true);
    Merci pour ton aide Alexis.M
    Si jamais il existe un autre moyen pour autocompléter deux champs n'hésiter surtout pas a m'en faire part.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je trouve malgré tout que le traitement est lourd en utilisant cette méthode.
    N'y aurait-il pas moyen d'utiliser Jquery et Ajax pour ce genre de traitement ?

Discussions similaires

  1. utiliser as childcmd pour lier deux champs
    Par BOMBARDIER dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/02/2007, 17h44
  2. Réponses: 3
    Dernier message: 22/11/2006, 10h35
  3. lier un champ memo
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/10/2006, 12h10
  4. Comment lier deux champs ..
    Par Alexy3171 dans le forum Access
    Réponses: 1
    Dernier message: 11/09/2006, 20h21
  5. Lier deux champs dans deux tables ?
    Par Olivierc dans le forum Access
    Réponses: 3
    Dernier message: 28/04/2006, 23h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo