2011-04-10 484 views

Respuesta

19

Tendrá que usar un marco web para enrutar las solicitudes a Python, ya que no puede hacer eso solo con HTML. Flask es un marco sencillo:

server.py:

from flask import Flask, render_template 
app = Flask(__name__) 

@app.route('/') 
def index(): 
    return render_template('template.html') 

@app.route('/my-link/') 
def my_link(): 
    print 'I got clicked!' 

    return 'Click.' 

if __name__ == '__main__': 
    app.run(debug=True) 

plantillas/template.html:

<!doctype html> 

<title>Test</title> 
<meta charset=utf-8> 

<a href="/my-link/">Click me</a> 

Ejecutar con python server.py y vaya a http://localhost:5000/. El servidor de desarrollo no es seguro, por lo que para implementar su aplicación, consulte http://flask.pocoo.org/docs/0.10/quickstart/#deploying-to-a-web-server

+0

¿Puedes hacer esto con la botella? – Temere

+0

@Temere: la sintaxis debe ser exactamente la misma. Creo que 'render_template' tiene un nombre diferente. – Blender

+0

Crear solo estos dos archivos no funciona. ¿Hay más por hacer (crear proyectos)? –

6

Sí, pero no directamente; puede configurar el controlador onclick para invocar una función de JavaScript que construirá un objeto XMLHttpRequest y enviará una solicitud a una página en su servidor. Esa página en su servidor puede, a su vez, implementarse usando Python y hacer lo que sea necesario.

2

Sí. Si el enlace apunta a su servidor web, puede configurar su servidor web para ejecutar cualquier tipo de código cuando se haga clic en ese enlace, y devolver el resultado de ese código al navegador del usuario. Hay muchas formas de escribir un servidor web como este. Por ejemplo, vea Django. Es posible que también desee utilizar AJAX.

Si desea ejecutar el código en el navegador del usuario, utilice Javascript.

2

Hay varias formas de hacerlo, pero la que mejor me ha funcionado es utilizar CherryPy. CherryPy es un framework web de Python minimalista que te permite ejecutar un pequeño servidor en cualquier computadora. Hay una pregunta muy similar a la suya en stackoverflow - Using the browser for desktop UI.

El siguiente código hará lo que quiera. Su ejemplo 2 del tutorial CherryPy.

import cherrypy 

class HelloWorld: 

    def index(self): 
     # Let's link to another method here. 
     return 'We have an <a href="showMessage">important message</a> for you!' 
    index.exposed = True 

    def showMessage(self): 
     # Here's the important message! 
     return "Hello world!" 
    showMessage.exposed = True 

import os.path 
tutconf = os.path.join(os.path.dirname(__file__), 'tutorial.conf') 

if __name__ == '__main__': 
    # CherryPy always starts with app.root when trying to map request URIs 
    # to objects, so we need to mount a request handler root. A request 
    # to '/' will be mapped to HelloWorld().index(). 
    cherrypy.quickstart(HelloWorld(), config=tutconf) 
else: 
    # This branch is for the test suite; you can ignore it. 
    cherrypy.tree.mount(HelloWorld(), config=tutconf) 

Yo personalmente uso CherryPy en combinación con otros módulos y herramientas:

  • Mako (biblioteca de plantillas)
  • py2exe (convertir en ejecutable de Windows)
  • GccWinBinaries (utilizado en combinación con py2exe)

Escribí un artículo sobre Browser as Desktop UI with CherryPy tha t introduce módulos y herramientas utilizadas, además de algunos enlaces adicionales que pueden ser útiles.

1

Además de ejecutar scripts de Python en un servidor, puede ejecutar scripts de Python en el lado del cliente utilizando Skulpt.

Cuestiones relacionadas