Executer un script python avec un boutton html
Salut !
Je cherche à créer un formulaire où j'entre des données numérique et ensuite lorsque je clique sur le boutton 'submit'... ça exécute un script python qui utilise les données.
J'aimerais connaitre les méthodes possibles... merci.
Je cherche à créer un formulaire où j'entre des données numérique et ensuite lorsque je clique sur le boutton 'submit'... ça exécute un script python qui utilise les données.
J'aimerais connaitre les méthodes possibles... merci.
1 réponse
-
Bonjour,
Il y a plusieurs écoles, voici ce qui est possible de faire (par ordre de préférence) :- utilise
pycharm
: tu programmes tout en python, et ton application s'occupe de retourner la page qui doit être traitée par le navigateur. Il est possible de facilement servir des fichiers statiques (image, css, javascript, etc...) - code une applet web : tu peux utiliser
gunicorn
+falcon
mais c'est plutôt moins pratique quecherrypy
. - installe au niveau de ton serveur web l'extension nécessaire pour lancer un cgi python
- code ta page web normalement, et au niveau du code disons php, appelle au travers d'un appel système python et le chemin vers ton code python.
cherry_server.py
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # See https://docs.cherrypy.org/en/latest/tutorials.html for details import cherrypy, os HTML_SKEL = """ <h1>Simple form</h1> <form action="/to_upper" method="post"> <textarea id="input_text" name="input_text" rows="1" cols="80">%(input)s</textarea> <div id="div_input"> <input type="submit" value="submit"> </div> <div id="div_output"> %(results)s </div> </form> <img width="300px" src="/static/image.jpg"> """ def upper_fonc(s): return s.upper() def make_html_page(args :dict) -> str: return HTML_SKEL % args class Handler: @cherrypy.expose def index(self): return make_html_page( { "input" : "some random text", "results" : "No result so far :)", } ) @cherrypy.expose def to_upper(self, input_text = "some random text", **kwargs): return make_html_page( { "input" : input_text, "results" : upper_fonc(input_text) } ) if __name__ == "__main__": conf = { "/": { "tools.sessions.on" : True, "tools.staticdir.root" : os.path.abspath(os.getcwd()) }, "/static": { "tools.staticdir.on" : True, "tools.staticdir.dir" : "./files" } } cherrypy.quickstart(Handler(), "/", conf)
Dans cet exemple :- l'utilisateur saisit une chaîne de caractère
- quand il clique sur le bouton submit, celle-ci est retournée en capitale.
- l'image dans cet exemple doit être rangée dans
files/image.jpg
pour s'afficher. - Côté navigateur : le site s'affiche en visitant
http://localhost:8080
, et l'imagehttp://localhost:8080/static/image.jpg
. On peut aussi accéder au site via ton adresse IP.
Bonne chance - utilise