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

Python Discussion :

Flask avec Fetch


Sujet :

Python

  1. #1
    Membre actif
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2021
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2021
    Messages : 19
    Par défaut Flask avec Fetch
    Bonjour,
    j'ai ouvert une discussion sur le forum Micropython (https://github.com/orgs/micropython/discussions/13529) qui ne m'a pas donner de réponse.
    Comme cela m'a été suggéré, j'ai fait une maquette en Python/Flask équivalente à mon projet pour des tests.
    Ma question est la suivante : comment interagit Fetch avec Flask dans le cas présenté.
    Il n'y a pas de gestion de la réponse ni des datas

    Code Python:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    from flask import Flask, render_template
    app = Flask(__name__)
     
    led=False
     
    def toggle():
        global led
        if led:
            print ("Led ON")
        else:
            print ("Led OFF")
        led=not led
        return  
     
    @app.route('/')
    def index():
        return render_template('index.html',led_value=led)
     
    @app.route('/toggle')
    def toggle_led():
        print("Receive Toggle Request!")
        led_value=toggle()
        return "OK"
     
    app.run()
    Code index.js
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function toggleButtonSwitch() {
      fetch("/toggle");
      return;
    }

    Code index.html
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <!DOCTYPE html>
    <html>
      <head>
        <script type=text/javascript src="{{ url_for('static', filename= 'js/index.js')}}"></script>
      </head>
      <body>
            <h1>MicroPython Webserver</h1>
            <div>
              <p>Toggle Switch</p>
              <input type="checkbox" id="switch" onclick="toggleButtonSwitch()" {%
              if led_value == 1 %} checked {% endif %}/><label for="switch"
                >Toggle</label>
            </div>
      </body>
    </html>

    Si quelqu'un a une explication (simple), je suis preneur
    Merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 703
    Par défaut
    Citation Envoyé par PLUB_85 Voir le message
    Si quelqu'un a une explication (simple), je suis preneur
    Il n'y a pas d'explication simple! Vous devez partir d'une documentation flask qui explique comment ça marche.
    Puis imaginer comment ce truc va bien pouvoir être utilisé pour faire ce que vous attendez (ou reformuler vos attentes pour que ça puisse être fait avec ou choisir un autre outil pour...).

    Citation Envoyé par PLUB_85 Voir le message
    Ma question est la suivante : comment interagit Fetch avec Flask dans le cas présenté.
    Côté Flask, la fonction ne retourne pas de JSON et côté JavaScript/fetch, çà ne fait rien non plus.
    Votre code montre juste que vous n'avez pas lu la documentation (ou pas compris).... Et comme ça ne fait rien, difficile de savoir l'intention qui est derrière ces lignes. Le problème n'est pas dans ce que font ces lignes mais sur le pourquoi faire les avoir écrites!


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre actif
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2021
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2021
    Messages : 19
    Par défaut Flask avec Fetch
    La documentation Flask n'explique pas ce que je demande et je n'ai rien trouvé sur le net. J'essaye de comprendre tout simplement ce que j'ai trouvé sur ce site https://github.com/donskytech/microp...odot/tree/main, et plus particulièrement ceci : https://github.com/donskytech/microp...ic/js/index.js
    On peut être Expert éminent sénior et ne pas savoir communiquer avec les moins aguerris que soi. Je poserai ma question sur un autre forum plus réceptif
    Merci

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 522
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 522
    Par défaut
    a priori tu n'as pas compris les réponses données sur le github.
    La route /toggle dans le Flask renvoie juste "OK", donc le fetch récupére cette réponse et le then le prend pour l'afficher dans la console java
    Rien ne sera récupéré d'autres que ce que la route renvoie.

    Si tu veux connaitre la valeur de la led, il faut appeler led_module.get_value() dans la route, puis ensuite retourner l'info dans le return. Selon que tu veux renvoyé, soit tu renvoies cette valeur, soit tu renvoies une liste ou mieux un dictionnaire contenant les différentes valeurs.
    Coté JS avec la réponse, tu auras le type d'info que tu as renvoyé et donc à traiter dans le .then par exemple.

  5. #5
    Membre actif
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2021
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2021
    Messages : 19
    Par défaut
    Merci de cette non réponse. Tout ce que tu me dis a été vu dans la discussion Micropython.
    Ma question est TRÈS simple: Que fait fetch("/toggle");(Javascipt) avec @app.route('/toggle')
    def toggle_led(): de Python/Flask.
    L'utilisation de la ligne fetch("/toto") seule n'est pas documentée

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 053
    Par défaut
    Bonjour,

    Tout cela est dans la doc de l'API Fetch, qui annonce que la méthode de la requête par défaut est GET.

    Votre question est trop généraliste et amène naturellement à la documentation de l'API ou celle proposée par wiztricks concernant fetch et flask.

    Si vous voulez des précisions, dîtes ce que vous avez compris de manière générale et posez votre question de manière précise... on ne va pas inventer ce qui n'est pas dans la doc, et pour savoir ce que fait fetch seule, rien de plus logique que de tester par la pratique, utilisez un debugger et vérifiez par exemple que vous entrez dans la route "/toogle".

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 320
    Par défaut
    bonjour
    Citation Envoyé par PLUB_85 Voir le message
    Que fait fetch("/toggle");(Javascipt) avec @app.route('/toggle')
    La question ne devrait pas être posée

    cette fonction javascript ne fait que récupérer le contenu retourné par ton url http://localhost/toggle.

    Ici, nous sommes un forum python, donc ta première démarche doit être d'écrire et SURTOUT tester ta partie flask. Ce que tu n'as même pas fait
    Tu dois au minimum lancer cette "page" dans ton navigateur pour voir si le retour est conforme à tes souhaits. (peut-être que tu désires avoir alternativement 1 puis 0 ???)

    Une fois que cette adresse retourne ce qu'il faut, ensuite, tu peux tester/écrire ta partie javascript. Ici, elle ne fait rien...
    note: écrire une variable "led_value" coté python ne va jamais créer par magie une variable "led_value" coté javascript !

    -----------

    On peut voir avec ton code que tu n'as aucune compétence python , aucune flask et aucune javascript donc tu nous en demande beaucoup trop

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def toggle():
        global led
        # ton code
        return  
     
    @app.route('/toggle')
    def toggle_led():
        led_value=toggle()
    Rien qu'au niveau python (même pas flask), ceci est niveau grand grand débutant ... tu écris une fonction qui retourne rien et, tu essayes de récupérer une chose ... que tu n'utilises pas

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 522
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 522
    Par défaut
    Citation Envoyé par PLUB_85 Voir le message
    Merci de cette non réponse. Tout ce que tu me dis a été vu dans la discussion Micropython.
    Ma question est TRÈS simple: Que fait fetch("/toggle");(Javascipt) avec @app.route('/toggle')
    def toggle_led(): de Python/Flask.
    L'utilisation de la ligne fetch("/toto") seule n'est pas documentée
    euh bah si on a répondu .... mais tu ne comprends pas ....

    Mais peut-être avec 3 explications supplémentaires


    fetch ici appele la route et récupère le résultat de celle-ci.....

    fetch("/route") n'a d'intéret que de faire un get sur la route, sans en utiliser le route
    c'est comme faire un input('attente') qui affichera 'attente', et attendra une saisie utilisateur sans rien en faire derrière.

    une page sur fetch https://fr.javascript.info/fetch

Discussions similaires

  1. [eZ Publish] Problème template avec fetch et related_objects
    Par Vinestro dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/08/2010, 11h21
  2. Update d'une collection many-to-one avec fetch=eager
    Par totoranky dans le forum Hibernate
    Réponses: 0
    Dernier message: 16/07/2010, 18h16
  3. OneToMany avec fetch = FetchType.EAGER
    Par coold dans le forum JPA
    Réponses: 38
    Dernier message: 23/09/2009, 11h55
  4. [z/OS] Procedure stockée Cobol avec fetch
    Par freed201 dans le forum Cobol
    Réponses: 7
    Dernier message: 05/01/2009, 13h14
  5. [9i] pb Temps de réponse avec FETCH ... INTO
    Par sygale dans le forum Oracle
    Réponses: 5
    Dernier message: 05/04/2006, 17h51

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