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

Interfaçage autre langage Python Discussion :

Json et page web


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 30
    Points : 18
    Points
    18
    Par défaut Json et page web
    Bonjour à tous.

    Je travaille sur le module flask, afin de créer un site web dynamique dans le but de d'interfacer l'ensemble de mon travail.
    Je souhaiterai inclure un fichier Json dans une de mes pages web.

    Voici où j'en suis:

    Actuellement je crée un dictionnaire que je passe en Json, et je le retourne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @app.route('/test/')
    def test():
         dict = {}
         dict["Nom"] = ["Petit"]
         dict["Prenom"] = ["Jean"]
         return jsonify(dict)
     
     
    if __name__ == ' __main__ ':
          app.run(host='127.0.0.1',debug=True,port=5001)
    Ceci marche très bien j'ai mon dictionnaire au format Json qui s'affiche sur une page web vierge.

    Voilà où j'ai besoin de vous.
    Moi j'aimerai inclure ce fichier Json dans une de mes pages HTML que je créé moi même.
    Quelque chose dans ce style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @app.route('/test/')
    def test():
         dict = {}
         dict["Nom"] = ["Petit"]
         dict["Prenom"] = ["Jean"]
         return render_template('test.html',js=jsonify(dict))
     
     
     
    if __name__ == ' __main__ ':
          app.run(host='127.0.0.1',debug=True,port=5001)
    Lorsque je réalise ceci, dans ma page 'test.html' en lieu et place de mon Json, j'obtiens la réponse suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Response 165 bytes [200 OK]>
    En espérant d'avoir étais assez clair.

    Merci à tous.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Citation Envoyé par Jackbalek Voir le message
    Moi j'aimerai inclure ce fichier Json dans une de mes pages HTML que je créé moi même.
    Quelque chose dans ce style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @app.route('/test/')
    def test():
         dict = {}
         dict["Nom"] = ["Petit"]
         dict["Prenom"] = ["Jean"]
         return render_template('test.html',js=jsonify(dict))
    Là c'est du Python que tu nous montres ...

    Quoiqu'il en soit, ta page test.html reçoit bien le json en argument, il faut voir ce qu'elle en fait maintenant.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Oui oui je suis conscient que je suis sous Python . Désolé si je ne l'ai pas dit plus clairement.

    Dans ma page HTML j'ai ceci qui s'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Response 165 bytes [200 OK]>

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Petite question au hasard : app.run(host='127.0.0.1', debug=False, port=5001) ça donnerait quoi ?

    @+.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par tarball69 Voir le message
    Bonjour,

    Petite question au hasard : app.run(host='127.0.0.1', debug=False, port=5001) ça donnerait quoi ?

    @+.
    Ceci te permet de reload ta page automatiquement, même après avoir changer ton code.

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Citation Envoyé par Jackbalek Voir le message
    Oui oui je suis conscient que je suis sous Python . Désolé si je ne l'ai pas dit plus clairement.

    Dans ma page HTML j'ai ceci qui s'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Response 165 bytes [200 OK]>
    D'accord mais ce que fait Flask c'est ouvrir le fichier test.html, le modifier suivant les instructions que tu y as écrite à son intention (des machins comme {% block home %}) ainsi que les données json et retourner cette page modifiée au requérant.

    C'est ce qui me fait dire que le problème se situe dans ta page html.

    Ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @app.route('/test/')
    def test():
         dict = {}
         dict["Nom"] = ["Petit"]
         dict["Prenom"] = ["Jean"]
         return render_template('test.html',js=jsonify(dict))
    est classique et me semble exact.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    C'est fort probable que ce soit un problème sous html, je suis novice dans ce sujet.

    Voici un exemple de ce que je réalise dans ma page HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <html>
          <head>
    		<Title>PAGE</Title>
          </head>
     
         <body>
               <p> Voici le résultat de mon json : {{js}} </p>
        </body>
     
    </html>
    Il y a peut être une façon spécifique de l'appeler que je ne fait pas.

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Le json n'est pas utilisable directement comme cela, il faut le charger, passer les data et, dans le html, dire à Flask comment les utiliser.


    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @app.route('/fake')
    def test():
         dict = {}
         dict["Nom"] = "Petit"    # ! ne pas mettre de crochets aux valeurs !
         dict["Prenom"] = "Jean"
         js = jsonify(dict)
         return render_template('fake.html', data=json.loads(js.data))
    avec fake.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <html>
          <head>
    		<Title>PAGE</Title>
          </head>
         <body>
               <p> Voici le résultat de mon json : </p>
               <p>Nom: {{ data.Nom }} </p>
               <p>Prenom: {{ data.Prenom }} </p>
        </body>
    </html>
    Résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Voici le résultat de mon json :
     
    Nom: Petit
     
    Prenom: Jean
    Si l'anglais ne te rebute pas, ce site est particulièrement intéressant :
    http://www.realpython.com/blog/pytho...-flask-part-i/

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup VinsS. Je me doutais bien qu'il devait me manquer une étape.

    Après avec votre méthode d'affichage on perd un peu le format Json. Est il possible de garder ce format. Un peu comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    {
      "Prenom": [
        "Jean", 
        "Pierre", 
        "Paul", 
        "Bernard"
      ]
      "Nom": [
        "Petit",
        "Grand",
        "Moyen"
       ]
    }

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Ha c'est pour ça que tu avais mis des crochets aux valeurs.


    Tu peux itérer sur ces valeurs avec Flask.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    {% for name in data.Nom %}
        ... traitement de name
    Seulement si tu veux absolument passer le json tel quel c'est que tu l'utilises sous cette forme, par exemple tu as du javascript qui va traiter les données.

    Si ce n'est pas le cas, Flask lui, n'a aucunement besoin des données en json, c'est du Python donc le dictionnaire de départ lui convient très bien, même mieux.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Oui je pensais bien que le dictionnaire était plus approprié à Flask.
    C'était juste pour le côté esthétique que je souhaitais le mettre en Json.
    La actuellement je travaille juste en laçant le dictionnaire dans ma page web. Mais j'aurais voulu faire la même chose avec un Json.

    Rien de bien transcendant je vous l'accorde .

Discussions similaires

  1. [JSP][WEB] recuperer le contenu d'une page web
    Par ypikahe dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 14/03/2008, 10h10
  2. application qui connecte sur une page web
    Par spoolz dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 14/04/2004, 09h47
  3. [Réseau]Récupération de page Web
    Par n1c0las dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 27/03/2004, 18h15
  4. ouvrir une page Web en mode texte
    Par Halleck dans le forum Windows
    Réponses: 7
    Dernier message: 03/03/2004, 15h08
  5. Réponses: 3
    Dernier message: 28/10/2003, 14h26

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