Appel d'une fonction depuis html

Le
Zarak
Bonjour,

Je travaille avec mod-python, et je n'arrive pas à trouver comment faire
- si tant est que ce soit possible - pour appeler une fonction python
depuis un formulaire HTML, avec si possible la fonction et le formulaire
dans le même fichier.

Ex :

"""
<html>
<body>
<FORM name="form1" method=post action=fonction()>
<INPUT type="submit" value="Envoyer">
</FORM>
</body>
</html>
"""

def fonction():
etc

Merci d'avance.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
NicolasP
Le #21223281
Le 18/02/2010 14:26, Zarak a écrit :
Bonjour,

Je travaille avec mod-python, et je n'arrive pas à trouver comment faire
- si tant est que ce soit possible - pour appeler une fonction python
depuis un formulaire HTML, avec si possible la fonction et le formulaire
dans le même fichier.

Ex :

"""
<html>
<body>
<FORM name="form1" method=post action=fonction()>
<INPUT type="submit" value="Envoyer">
</FORM>
</body>
</html>
"""

def fonction():
etc...

Merci d'avance.


Utilise Karrigell (http://www.karrigell.fr).

Nicolas
Zarak
Le #21223271
Le 18/02/2010 14:36, NicolasP a écrit :


def fonction():
etc...

Merci d'avance.


Utilise Karrigell (http://www.karrigell.fr).



Salut et merci encore de ton aide.
Il n'y a vraiment pas moyen de le faire avec mod-python ?
NicolasP
Le #21224211
Le 18/02/2010 14:46, Zarak a écrit :
Le 18/02/2010 14:36, NicolasP a écrit :


def fonction():
etc...

Merci d'avance.


Utilise Karrigell (http://www.karrigell.fr).



Salut et merci encore de ton aide.
Il n'y a vraiment pas moyen de le faire avec mod-python ?


Je ne connais pas mod python. Je ne peux donc pas t'aider.
Par contre, Karrigell est utilisable derrière Apache avec ou sans mod-python.
Autre remarque, ton fichier source ne peut pas être un fichier html. Ton fichier source doit être un fichier exécutable du type .py (ou .ks ou .pih ou .hip avec Karrigell). Les fichiers html sont des fichiers statiques, ils sont envoyés par le serveur vers le client directement (sans interprétation aucune).

Nicolas
Bruno Desthuilliers
Le #21224331
Zarak a écrit :
Bonjour,

Je travaille avec mod-python, et je n'arrive pas à trouver comment faire
- si tant est que ce soit possible - pour appeler une fonction python
depuis un formulaire HTML



Ca n'a pas beaucoup de sens. Un formulaire HTML génère une requete HTTP
(get ou post). Cette requête est envoyée au serveur web - à l'url
précisée dans l'attribut 'action' -, serveur qui le traite comme bon lui
semble (le formulaire est totalement ignorant de la techno employée coté
serveur pour gérer la requete).

Bref, si tu veux que ton formulaire soit traité (sur le serveur) par une
fonction codée en Python, il faut que tu paramètres ton serveur pour
qu'il réponde aux requetes pour l'url en question en appelant cette
fonction.

Accessoirement, comprendre le protocole HTTP peut s'avérer utile,
particulièrement pour du développement web...


, avec si possible la fonction et le formulaire
dans le même fichier.



Ouais. Genre "server page" (PHP etc...), quoi. Il existait (existe
encore ???) un paquetage "PSP" (Python server page) pour mod-python,
mais je ne sais pas si c'est fonctionnel, maintenu, etc.

Honnêtement, pour faire du developpement web en Python, il y a des
solutions bien plus évoluée. NicolasP en citait une (à laquelle je n'ai
jamais accroché), mais il en existe beaucoup d'autres. La plus populaire
actuellement est certainement Django. C'est peut-être un peu overkill
pour un simple formulaire (quoique pas plus que mod_python en fait),
mais ça évite pas mal de boulot inutile sur le long terme.

Mes 2 centimes...
Zarak
Le #21224581
"NicolasP"
Salut et merci encore de ton aide.


Il n'y a vraiment pas moyen de le faire avec mod-python ?


Je ne connais pas mod python. Je ne peux donc pas t'aider.
Par contre, Karrigell est utilisable derrière Apache avec ou sans mod-python.



D'après ce que j'ai lu, il y a plusieurs méthodes pour le faire tourner avec Apache,
mais ça a l'air bien chiant à configurer. J'ai essayé la méthode "mod-python", j'y
ai passé des heures sans succès, sous Linux.

Enfin, tout ça c'est pas moi qui décide, c'est mon "supérieur" :-|

Autre remarque, ton fichier source ne peut pas être un fichier html. Ton fichier source doit être un fichier exécutable du type .py >(ou .ks ou .pih ou .hip avec Karrigell). Les fichiers html sont des fichiers statiques, ils sont envoyés par le serveur vers le client >directement (sans interprétation aucune).



Ouep, pas de problème, je travaille bien avec des fichiers python.
Zarak
Le #21224571
"Bruno Desthuilliers"

Ouais. Genre "server page" (PHP etc...), quoi. Il existait (existe
encore ???) un paquetage "PSP" (Python server page) pour mod-python,
mais je ne sais pas si c'est fonctionnel, maintenu, etc.

Honnêtement, pour faire du developpement web en Python, il y a des
solutions bien plus évoluée. NicolasP en citait une (à laquelle je n'ai
jamais accroché), mais il en existe beaucoup d'autres. La plus populaire
actuellement est certainement Django. C'est peut-être un peu overkill
pour un simple formulaire (quoique pas plus que mod_python en fait),
mais ça évite pas mal de boulot inutile sur le long terme.



Je m'étais déjà renseigné sur Django, et effectivement j'ai un peu peur
que soit too much pour ce que je veux faire (interface intranet pour
se connecter à Google Agenda et récupérer/insérer/afficher des données
de calendriers, entre autres).
Bruno Desthuilliers
Le #21229151
Zarak a écrit :
"Bruno Desthuilliers"
Ouais. Genre "server page" (PHP etc...), quoi. Il existait (existe
encore ???) un paquetage "PSP" (Python server page) pour mod-python,
mais je ne sais pas si c'est fonctionnel, maintenu, etc.

Honnêtement, pour faire du developpement web en Python, il y a des
solutions bien plus évoluée. NicolasP en citait une (à laquelle je n'ai
jamais accroché), mais il en existe beaucoup d'autres. La plus populaire
actuellement est certainement Django. C'est peut-être un peu overkill
pour un simple formulaire (quoique pas plus que mod_python en fait),
mais ça évite pas mal de boulot inutile sur le long terme.



Je m'étais déjà renseigné sur Django, et effectivement j'ai un peu peur
que soit too much pour ce que je veux faire (interface intranet pour
se connecter à Google Agenda et récupérer/insérer/afficher des données
de calendriers, entre autres).




Mmmm.... ton besoin est AMHA déjà suffisant pour justifier l'emploi d'un
framework digne de ce nom (Django, Pylons, web.py ...). Accessoirement,
tu n'es pas obligé d'utiliser toutes les fonctionnalités du framework -
par exemple, dans ton cas, la partie ORM de Django ne te servirait
probablement à rien (pour le moment en tous cas... dis toi bien que les
besoins évoluent).

Mais bon, tu peux aussi choisir de partir au plus bas niveau et de,
petit à petit, réinventer la roue - parce que les fonctionnalités
offertes par ces frameworks ne sont guère que la factorisation des
besoins réccurrents de toute application web.

mes 2 centimes...
Julien
Le #21230641
Je peux te conseiller web2py qui est moins usine à gaz que django et
plus facilement déployable. Web2py utilise DAL et non pas du SQL
alchemy...Mais je hais les ORM, j'ai toujours trouvé abérant de
calquer de la logique relationnelle sur de la logique objet, mais
c'est un autre débat. Il y a aussi cherrypy ou tornado qui pourrait
répondre à ton besoin.
Bruno Desthuilliers
Le #21230881
Julien a écrit :
Je peux te conseiller web2py qui est moins usine à gaz que django et
plus facilement déployable. Web2py utilise DAL et non pas du SQL
alchemy...



Que n'utilise pas Django, soit dit en passant...

Mais je hais les ORM, j'ai toujours trouvé abérant de
calquer de la logique relationnelle sur de la logique objet,



Certes, vu comme ça, c'est un peu débile.

Mais en l'occurrence - et en particulier pour SQLAlchemy, qui n'est pas
un ORM -, le but est plus d'"exposer" la logique relationnelle en
termes d'objets (objet table, objet requete, objet "resultset", etc) que
l'inverse.

De mon point de vue, manipuler les requêtes en tant que chaines de
caractères - surtout dans un langage comme Python - est au moins aussi
inepte que de vouloir transformer un SGBDR en "entrepôt à objets". Bref,
ne jettes pas le bébé avec l'eau du bain.

> mais c'est un autre débat

!-)
Pierre Quentel
Le #21243981
On 18 fév, 14:26, Zarak
Bonjour,

Je travaille avec mod-python, et je n'arrive pas à trouver comment fair e
- si tant est que ce soit possible - pour appeler une fonction python
depuis un formulaire HTML, avec si possible la fonction et le formulaire
dans le même fichier.

Ex :

"""
<html>
<body>
        <FORM name="form1" method=post action=fonction()>
        <INPUT type="submit" value="Envoyer">
        </FORM>
</body>
</html>
"""

def fonction():
        etc...

Merci d'avance.



Bonjour,

Avec mod_python je ne pense pas que ce soit possible. Avec Karrigell
(et le module HTMLTags qui génère du HTML à partir de code Python) to n
code tiendrait dans le script suivant :

=========
from HTMLTags import *

def index():
form = FORM(action="fonction",method="post")
form <= INPUT(Type="submit" value="Envoyer")
print HTML(BODY(form))

def fonction():
etc...
=========

En ce qui concerne la configuration derrière Apache, c'est toujours un
peu le casse-tête quelle que soit la solution employée pour les
scripts Python. Tu t'es cassé les dents sur mod_python et peut-être
aussi sur Karrigell mais je pense que c'est pareil pour tous les
frameworks (et pas seulement pour Python) : il faut comprendre un
minimum comment Apache fonctionne et les principales options à
modifier dans le fichier httpd.conf

Dans la plupart des cas il faut :
- définir le DocumentRoot
- ajouter ou décommenter les modules requis (mod_rewrite,
mod_python,etc)
- éventuellement redéfinir le ScriptAlias pour les scripts CGI
- modifier les directives dans la section <Directory> correspondant au
DocumentRoot
- éventuellement mettre le bon fichier .htaccess au bon endroit

En plus il faut vérifier le chemin de l'interpréteur Python dans les
scripts CGI... Ca semble de l'hébreu au début mais il n'y a pas trop
moyen d'y échapper...

Courage !
Pierre
Publicité
Poster une réponse
Anonyme