Lo más probable es que sea una pregunta tonta para aquellos que conocen la respuesta, pero soy un principiante, y aquí está:

Tengo un script de Python que ejecuto en una línea de comandos con algún parámetro, y me imprime algunos resultados. Digamos que los resultados son un código HTML.

Nunca hice ninguna programación de Python para la web, y no pude resolverlo ... Necesito tener una página (OK, sé cómo subir archivos a un servidor, Apache se está ejecutando, Python está instalado en el servidor ... .) con un campo de edición, que aceptará ese parámetro, y el botón Enviar, y necesito que "imprima" los resultados en una página web después de que el usuario haya enviado un parámetro adecuado, o muestre cualquier resultado que se encuentre en una situación de línea de comandos están impresos

He leído los capítulos de Dive Into Python sobre "Procesamiento HTML" y "Servicios web HTTP", pero no describen lo que estoy buscando.

Si la respuesta no es breve, agradecería mucho los enlaces a las cosas más relevantes para leer o tal vez las palabras clave para buscar en Google.

10
user63503 8 oct. 2009 a las 00:40

8 respuestas

La mejor respuesta

Parece que solo necesita habilitar CGI en apache, que redirigirá su salida a la salida del servidor web.

Python tiene biblioteca CGI, puede echarle un vistazo.

Aquí hay un ensayo de Guido (un poco anticuado)

Y una instrucción interactiva que parece prometedora.

PD.

Quizás también desee ver la oferta de Google para este motor de aplicaciones de Google ( aunque puede no ser lo que quieres)

4
OscarRyz 7 oct. 2009 a las 20:55

Creo que Django es exagerado. Si desea aprender sobre estas cosas, comience con algo muy simple como esto:

http://www.islascruz.org/html/index.php/blog/show/Python:-Simple-HTTP-Server-on-python..html

Puede poner su código donde está do_GET.

0
Peter Mortensen 15 abr. 2010 a las 15:17

Un método actual para crear un servidor de página web simple (uno de Python es el módulo wsgiref.

wsgiref es una implementación de referencia de la especificación WSGI que se puede usar para agregar soporte WSGI a un servidor web o marco.

Vea algunas SO qusetions (https://stackoverflow.com/search?q= [python] + wsgiref) para ver algunos ejemplos de código y más sugerencias.

El wsgiref ejemplo es un buen lugar para comenzar:

from wsgiref.simple_server import make_server

def hello_world_app(environ, start_response):
    status = '200 OK' # HTTP Status
    headers = [('Content-type', 'text/plain')] # HTTP Headers
    start_response(status, headers)

    # The returned object is going to be printed
    return ["Hello World"]

httpd = make_server('', 8000, hello_world_app)
print "Serving on port 8000..."

# Serve until process is killed
httpd.serve_forever()
0
Community 23 may. 2017 a las 12:13

No he leído DIVE INTO PYTHON, así que quizás lo que estoy diciendo es redundante. Como dijo Daniel, CGI puede funcionar para usted. En la actualidad, este sería solo el caso de cosas simples con un número bastante bajo de visitas. El módulo Python CGI está documentado aquí. Siempre he usado ese módulo para el procesamiento de formularios y solo he realizado impresiones para la salida. Por lo que he podido entender, esa es la forma habitual de hacer las cosas, pero no he hecho mucho CGI con Python.

No dices lo que estás haciendo, así que declararé lo que puede ser obvio: asegúrate de decirle al servidor que estás enviando una página web con tu primera salida siendo el tipo de contenido seguido de un espacio en blanco línea. Por lo general, esto se hace con:

print "Content-Type: text/html"
print

(Para Python 2, para 3 necesitará hacer sus impresiones en llamadas a funciones). Después de esto, imprime sus etiquetas html, encabezado, cuerpo, etc. y el contenido real.

0
PTBNL 7 oct. 2009 a las 21:35

Estoy completamente de acuerdo con Matt: Django es lo que quieres. Django proporciona una solución completa y una documentación realmente maravillosa que lo ayudará a poner en marcha algo. Si su aplicación crece y se vuelve más complicada, Django aún puede funcionar; Django funciona incluso para sitios web muy grandes y muy complicados.

Eche un vistazo al libro gratuito, El libro de Django.

Otra ventaja con Django: si haces tu aplicación web en Django, puedes portarla a Google App Engine.

0
steveha 7 oct. 2009 a las 20:55

Lamento decirlo, pero los servicios web HTTP son lo que estás buscando. Piénselo de esta manera: coloca un formulario en una página web y un botón de envío. Eso va a un servicio web que acepta la solicitud y la acepta, y devuelve una respuesta , que es una página de html. En realidad, nunca tiene que guardar el html, siempre se genera dinámicamente, pero no obstante es una página válida de html.

Mire django http://www.djangoproject.com/ para obtener un kit de herramientas de servicio web basado en Python de alta calidad.

El primer paso para comprender el lenguaje de solicitud / respuesta es pensar en la solicitud como un conjunto de parámetros de línea de comandos con formato específico (definido por CGI, es decir, es una acción GET o POST HTML), y la respuesta como un formato específico salida (HTML) que se envía, no a stdout, sino a través del "cable" a algún navegador. El envío de la solicitud se extiende a través del cable y ejecuta el script con algunos parámetros, y usted recibe la salida: su página HTML formateada.

1
Matt 7 oct. 2009 a las 20:43

¿De quién es el servidor web? Si se trata de un servidor web proporcionado por una empresa de alojamiento web u otra persona y usted no tiene control sobre él, debe determinar de qué manera admiten el uso de Python para escribir aplicaciones web. No es suficiente saber que tienen Python disponible.

Como señalaron otros, es probable que al menos se admitan scripts CGI que usen Python. Sin embargo, CGI no es realmente práctico para ejecutar grandes marcos web de Python como Django.

Sin embargo, es posible que el servidor web también sea compatible con FASTCGI. Si ese es el caso, es posible usar marcos web de Python más grandes, ya que FASTCGI usa procesos persistentes donde CGI crea un proceso para cada solicitud, donde la sobrecarga de marcos web Python grandes generalmente hace que el uso de CGI sea poco práctico como resultado.

Si el servidor Apache es controlado por otros que usan un servidor web Python independiente como wsgiref y que se lo envía desde Apache, tampoco será factible ya que no puede configurar Apache para hacerlo.

Entonces, descubra cómo se admite el uso de Python para aplicaciones web y averigüe si solo es un usuario de la instancia de Apache o si tiene alguna medida de control para cambiar sus archivos de configuración global y reiniciarlo. Esto determinará lo que puede hacer y usar.

2
Graham Dumpleton 8 oct. 2009 a las 11:04

Para una tarea tan simple, probablemente no necesite más que CGI. Afortunadamente, Python tiene un módulo cgi incorporado que debe hacer lo que quieras.

O puede examinar algunos de los marcos web mínimos, como web.py.

4
Frank V 7 oct. 2009 a las 20:52