2010-07-20 7 views
3

Je veux envoyer une chaîne à une fonction python que j'ai écrite et que vous voulez afficher la valeur de retour de cette fonction sur une page Web. Après quelques recherches initiales, WSGI sonne comme le chemin à parcourir. De préférence, je ne veux pas utiliser de cadres fantaisie. Je suis sûr que quelqu'un l'a déjà fait. Besoin d'être rassuré. Merci!Appel d'une fonction python sur le Web en utilisant AJAX?

Répondre

5

Vous pouvez essayer Flask, c'est un framework, mais minuscule et compatible 100% WSGI 1.0.

from flask import Flask 
app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello World!" 

if __name__ == "__main__": 
    app.run() 

Note: Flask se trouve au-dessus de Werkzeug et peut-être besoin d'autres bibliothèques comme sqlalchemy pour le travail de DB ou jinja2 pour templating.

+0

Il convient de noter que Flask est en fait une couche sur Werkzeug, ce qui est tout aussi minuscule, mais encore assez petit pour être facile à gérer. Cela signifie que vous avez environ 3-4 dépendances implicites, et pas seulement Flask. (En tant que quelqu'un avec des objectifs similaires à l'OP, je ne considère pas que ce soit un problème à distance, par rapport à des choses comme Turbogears2.) –

+0

J'ai ajouté votre commentaire. Merci. – miku

3

Vous pouvez utiliser cgi ...

#!/usr/bin/env python 

import cgi 

def myMethod(some_parameter): 
    // do stuff 
    return something 

form = cgi.FieldStorage() 

my_passed_in_param = form.getvalue("var_passed_in") 
my_output = myMethod(my_passed_in_param) 
print "Content-Type: text/html\n" 
print my_output 

Ceci est juste un exemple très simple. En outre, votre type de contenu peut être json ou texte brut ... je voulais juste montrer un exemple.

+0

pas tout à fait, je veux une solution autonome. Merci quand même. – shoold

+1

'cgi' est dans la bibliothèque standard. C'est aussi autonome que possible. –

+0

faut-il un serveur web comme apache2 sur la machine? – shoold

3

En plus de Flask, bottle est aussi simple et WSGI conforme:

from bottle import route, run 

@route('/hello/:name') 
def hello(name): 
    return 'Hello, %s' % name 

run(host='localhost', port=8080) 
# --> http://localhost:8080/hello/world