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 :

Rafraichissement page fonction choix d'une liste


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 46
    Par défaut Rafraichissement page fonction choix d'une liste
    Bonjour,

    J'ai réalisé un site interne afin de lister les @IP ainsi que les serveurs déployés sur notre réseau.

    Pour celà, j'ai utilisé une machine linux (ubuntu), django/python ainsi qu'une base de donnée sqlite3.

    Concernant la base de donnée, nous avons trois tables (IP, Materiel, Attribution) :
    IP(id, ip, masque, gateway, reseau)
    Materiel(id, nom, system, version, type, tri)
    Attribution(id, IP.ip, Materiel.nom)

    La table attribution nous permet donc d'attribuer une IP à un matériel grosso modo.

    Le site marche bien, mais pour le moment j'ai créé des views avec un affichage déjà préfait, je m'expliques :
    - listing des @IPs du reseau x
    - listing des serveurs windows
    - ......

    exemple de view
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    from gpires.models import IP
    from django.shorcuts import render_to_response
     
    def ip_x(request):
         list_ip = IP.objects.filter(reseau="resX")
         return render_to_response('gpires/ip_x.html', {'list_ip': list_ip})
    Le fichier ip_x.html contient un tableau qui liste les IP.

    Mais j'aimerais avoir une page de recherche, avec par exemple une liste qui permettre de choisir le type de matriel que l'on veut lister (serveur, poste, ...) ou encore le réseau sur lequel il est déployer, avec un bouton ou non lançant la recherche.

    En html/php je vois comment faire, mais là je bloques un peu.

  2. #2
    Membre éclairé Avatar de Lujeni
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 52
    Par défaut
    Si j'ai bien compris ta demande, c'est sur la partie template que tu bloques.

    Voila un exemple très simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <ul>
    // Affiche sous forme de liste toutes les IP envoyés par ton context (django)
    {% for ip in list_ip %}
        <li>{{ ip }}</li>
    {% empty %}
        <li>Sorry, no IP in this list!</li>
    {% endfor %}
    <ul>
    Si tu arrives à le faire en PHP tu ne devrais pas avoir de mal avec un template django. Pour ton problème, il te suffit de faire un formulaire avec les champs que tu as besoin et utiliser le moteur de template de django pour récupérer tes variables ou boucler coté client.

    Je te conseille de lire un peu avant de te lancer dans le dev: https://docs.djangoproject.com/en/dev/topics/templates/

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 46
    Par défaut
    Bonjour Lujeni,

    Tout d'abord merci pour ta réponse. J'ai déjà lue la documentation Django dans son ensemble.

    Mon point bloquant était le template lié au vue. J'ai trouvé ma solution comme suit.

    x.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form method="get" action="/results/">
        <label for="q">
        <input type="text" name="q">
        <input type="submit" value="Search">
    </form>
    Je récupères graces à cette fonction dans mon views.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def results(request):
        search_l = request.GET.get('q','')
        results = Attribution.objects.filter(table__icontains=search_l)
        return .......
    Par contre, il vaut mieux utilisé POST non ? Si quelqu'un peut me fournir des informations sur ce point

    Merci.

  4. #4
    Membre éclairé Avatar de Lujeni
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 52
    Par défaut
    Par contre, il vaut mieux utilisé POST non ? Si quelqu'un peut me fournir des informations sur ce point
    Par convention et sécurité, il faut mieux utiliser une requête en GET seulement pour les lectures en BDD et une requête POST pour tout ce qui concerne écriture et modification.

Discussions similaires

  1. Requête en fonction du choix d'une liste
    Par polon dans le forum Langage
    Réponses: 3
    Dernier message: 11/04/2009, 12h52
  2. Réponses: 0
    Dernier message: 09/09/2008, 21h53
  3. [AJAX] Different formulaire en fonction d'un choix dans une liste
    Par Hyuge dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/04/2008, 16h52
  4. Rafraichir un formulaire en fonction d'un choix dans une liste déroulante
    Par talondachil dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/01/2008, 23h17
  5. Réponses: 3
    Dernier message: 18/01/2007, 18h19

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