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 :

programme Brython Flask


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 14
    Par défaut programme Brython Flask
    Bonjour,

    J'essaie de réaliser un site internet avec Flask. J'utilise Brython pour écrire les scripts en Python et non en JS.
    Le problème est que Flask ne prend pas en compte mes scripts. Quand je lance la page Internet le script s'exécute et quand
    je le lance avec Flask il ne s'exécute pas.
    Mon script brython.js est bien placé dans l'arborescence, je n'ai pas de message d'erreur m'indiquant qu'il n'est pas trouvable.
    J'ai essayé de mettre le lien vers un script Brython en ligne. Mon script Python arrive à s'exécuter si je lance la page,
    mais si je lance Flask, je n'ai toujours rien.

    Ci-dessous mon code de ma page récupéré sur le site Brython et mon code Flask.

    Merci pour votre aide.

    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
    16
    17
    18
    19
    <html>
    <head>
    <meta charset="iso-8859-1">
    <script src="{{ url_for('static', filename='brython.js') }}"></script>
    <script src="https://cdn.rawgit.com/kikocorreoso/map2wiki/master/src/static/brython_dist.js"></script>
    </head>
    <body onLoad="brython({debug:1})">
    <script type="text/python">
    from browser import document as doc
    from browser import alert
     
    def echo(ev):
        alert("Salut %s !" %doc["zone"].value)
     
    doc["echo"].bind('click', echo)
    </script>
    <p>Vous vous appelez : <input id="zone"><button id="echo">click !</button>
    </body>
    </html>



    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
    26
    27
    import csv
    from flask import Flask, render_template, request
     
    # Si le chemin demandé est /Accueil
    app = Flask(__name__)
    @app.route('/Accueil')
    @app.route('/')
    def Accueil():
        return render_template('Parametre.html')
     
    # Si le chemin demandé est /Parametre
    @app.route('/Parametre', methods=['GET', 'POST'])
     
    def Parametre():
     
        # S'il s'agit d'une requête POST
        if request.method == 'POST':
            valeurpython = request.values["valrequete"]
     
     
            return render_template(valeurpython)
        # Sinon (s'il s'agit d'une requête GET)
        else:
            return render_template('demo2.html')
     
    if __name__ == '__main__':
        app.run(debug=True)

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 062
    Par défaut
    Bonjour,

    Ton HTML semble mal formé, il manque des terminaisons de tags.

    Pour le fonctionnement, dans le cas où le formalisme HTML n'est pas suffisant, fait un petit test rapide en copiant collant l'exemple de la documentation, et vérifie si le problème persiste...

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Si vous postez du code, il faut qu'il soit minimal histoire qu'on n'ait pas à le modifier pour le faire fonctionner.
    Car si je coupe toutes les erreurs, j'obtiens le HTML suivant:
    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
    16
    17
    18
    19
    <html>
    <head>
    <meta charset="iso-8859-1">
    <!-- script src="{{ url_for('static', filename='brython.js') }}"></script>-->
    <script src="https://cdn.rawgit.com/kikocorreoso/map2wiki/master/src/static/brython_dist.js"></script>
    </head>
    <body onLoad="brython({debug:1})">
    <script type="text/python">
    from browser import document as doc
    from browser import alert
     
    def echo(ev):
        alert("Salut %s !" %doc["zone"].value)
     
    doc["echo"].bind('click', echo)
    </script>
    <p>Vous vous appelez : <input id="zone"><button id="echo">click !</button>
    </body>
    </html>
    et le code suivant:
    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
    26
    27
    import csv
    from flask import Flask, render_template, request
     
    # Si le chemin demandé est /Accueil
    app = Flask(__name__)
    ## @app.route('/Accueil')
    ## @app.route('/')
    ## def Accueil():
    ##     return render_template('Parametre.html')
     
    # Si le chemin demandé est /Parametre
    @app.route('/', methods=['GET'])
     
    def Parametre():
     
        ## # S'il s'agit d'une requête POST
        ## if request.method == 'POST':
        ##     valeurpython = request.values["valrequete"]
     
     
        ##     return render_template(valeurpython)
        ## # Sinon (s'il s'agit d'une requête GET)
        ## else:
            return open('demo2.html').read()
     
    if __name__ == '__main__':
        app.run(debug=True)
    Mais impossible de reproduire le soucis.

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

  4. #4
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 14
    Par défaut
    Bonjour,

    Merci pour vos réponses. Effectivement, il y avait quelques erreurs.
    J'ai pu avancer dans mon projet 100% python et il fonctionne, même si je dois encore l'améliorer.
    J'ai cependant 2 questions :
    Comment fait-on pour repérer les erreurs de programmation de Python dans le html ? Il y a t-il un moyen d'avoir l'intitulé et la ligne qui posent problème ?
    Mon programme ci-dessous fonctionne, cependant Brython n'arrive pas à faire des calculs de puissance et modulo avec des valeurs plus élevées. Il y a-t-il une solution ?

    Merci pour votre aide.

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <!DOCTYPE html>
    <html lang="en">
      <head>
     
     
        <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
        <script src="http://brython.info/src/brython_dist.js"></script>
     
     
      </head>
      <body onload="brython()">
      <script type="text/python">
        from browser import document as doc
        from browser import ajax
        import math
     
     
     
        def on_complete(req):
            if req.status==200 or req.status==0:
                doc["txt_area"].html = req.text
            else:
                doc["txt_area"].html = "error "+req.text
     
        def get(ev):
     
     
          vala = doc['A'].value
          vala = int(vala)
          vala = pow(vala,49) 
          vala = vala % 893
     
          valb = doc['B'].value
          valb = int(valb)
          valb = pow(valb,49) 
          valb = valb % 893
     
     
          ajax.post("http://localhost:5000", data={  'pass': vala , 'prod': valb } , oncomplete=on_complete)
     
     
        doc['envoi'].bind('click',get)
     
    </script>
     
        <div class="container">
          <div class="header">
            <h3 class="text-muted">How To Manage JSON Requests</h3>
          </div>
          <hr/>
          <div>
          <p>
        <input type="password" id="A" size="5" name="a"> +
        <input type="text" id ="B" size="5" name="b"> =
        <textarea type="number" class="form-control" id="txt_area" cols="10" rows = '10'></textarea>
        <p><a id="envoi">envoie</a>
          </form>
          </div>
        </div>
      </body>
    </html>

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    from flask import Flask, render_template, request, jsonify
     
    # Initialize the Flask application
    app = Flask(__name__)
     
     
     
    @app.route('/', methods=['GET', 'POST'])
    def index():
     
     
        if request.method == 'POST':
            print ("post")
            password = request.values["pass"]
            produit = request.values["prod"]
            password= pow( int(password) ,169,893)
            produit= pow( int(produit) ,169,893)
     
            if password==123:
                return ("Code correct, nombre de produits : " + str(produit) )
            else:
                return "Code érroné"
     
     
        # Sinon (s'il s'agit d'une requête GET)
        else:
            print ("get")
            return render_template('index.html')
     
     
     
     
     
        return render_template('index.html')
     
    if __name__ == '__main__':
        app.run(debug=True)

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 062
    Par défaut
    cependant Brython n'arrive pas à faire des calculs de puissance et modulo avec des valeurs plus élevées. Il y a-t-il une solution ?
    Il y a un message d'erreur ?

    Est-ce utile d'avoir des entiers très grands ?

    Si non, on peut limiter la valeur entière de la puissance avec une condition...

Discussions similaires

  1. [Python 3.X] Problème programme simple - Brython
    Par Chromophobya dans le forum Général Python
    Réponses: 7
    Dernier message: 18/10/2015, 00h10
  2. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  3. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  4. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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