2010-12-10 18 views
20

Estoy aprendiendo Python. He creado algunos scripts que utilizo para analizar varios sitios web que ejecuto diariamente (a medida que se actualizan sus estadísticas), y miro el resultado en el intérprete de Python. Me gustaría crear un sitio web para mostrar los resultados. Lo que quiero hacer es ejecutar mi script cuando voy al sitio y mostrar una tabla ordenable de los resultados.¿Cómo creo una interfaz web para un script de python simple?

He mirado a Django y estoy en medio del tutorial, pero parece que hay un montón de sobrecarga para lo que debería ser un problema simple. Sé que podría escribir un script de Python para generar HTML simple, pero ¿es realmente la mejor manera? Me gustaría poder ordenar la tabla por varias columnas.

Tengo años de experiencia en programación (C, Java, etc.), pero tengo muy poca experiencia en desarrollo web.

Gracias de antemano.

+1

¿Por qué crees que debería ser un problema simple? – Falmarri

+0

Hola, gracias por los comentarios. He leído sobre los diversos marcos, pero no estoy seguro de que realmente necesite un "marco"."No tengo ningún dato que necesite almacenar (no es necesario un modelo). Solo analizo un sitio para obtener los datos, y casi no me lleva tiempo, así que puedo hacerlo cada vez que se visita el sitio (es solo un proyecto personal). Lo que quiero es algo que pueda usar para generar una tabla ordenable. – Jonathan

Respuesta

12

Si está creando páginas no interactivas, puede configurar fácilmente cualquier servidor web moderno para ejecutar su script de python como un CGI. En lugar de cargar un archivo estático, su servidor web devolverá el resultado de su secuencia de comandos python.

Esto no es muy sofisticado, pero si simplemente está devolviendo la salida sin necesidad de la fecha de envío del navegador, esta es la forma más fácil (escalar bajo carga es una historia diferente).

Ni siquiera necesita el módulo "cgi" de python, si no está recibiendo datos del navegador. Algo más complicado que esto y deberías usar un marco web.

Ejemplos y otros métodos

  • Simple Example: parte más difícil es configuración del servidor web
  • mod_python: Reducir el overhead CGI (de lo contrario, los ejecutivos de Apache el intérprete de Python para cada hit)
  • python module cgi: enviando datos a su secuencia de comandos python desde el navegador.

Clasificación

Javascript side sorting: He usado esta librería javascript para agregar tablas pueden ordenar. Esta es la forma más fácil de agregar ordenación sin requerir trabajo adicional u otro HTTP GET.

Instrucciones:
descargar este archivo
Añadir a su HTML
Añadir class = "ordenable" a cualquier tabla desea hacer sortable
Haga clic en los encabezados para ordenar

+0

Genial, eso es lo que estoy buscando. Lo intentaré más tarde esta noche, gracias! – Jonathan

8

Puedes considerar Tornado si Django es demasiado elevado. He usado ambos y estoy de acuerdo en que, si tienes algo simple/pequeño que hacer y que aún no conoces a Django, aumentará exponencialmente tu tiempo de producción. Por otro lado, puedes 'obtener' Tornado en un par de horas y hacer algo relativamente simple en uno o dos días sin experiencia previa. Al menos, esa ha sido mi experiencia con eso.

Ten en cuenta que Tornado sigue siendo una solución de compromiso: obtienes mucha simplicidad a cambio de la gran abundancia de características y accesos directos que obtienes con Django.

PD: además de ser un 'micro-framework', Tornado también es su propio servidor web, por lo que no se produce ningún borrado con wsgi/mod-cgi/fcgi .... simplemente escriba sus manejadores de solicitud y ejecútelo. Asegúrese de ver las demostraciones incluidas en la distribución.

16

¿Has considerado Frasco? Al igual que Tornado, es a la vez un "micro-framework" y un simple servidor web, por lo que tiene todo lo que necesita desde el primer momento. http://flask.pocoo.org/

Este ejemplo (la derecha de la página) resume bastante bien lo simple que puede ser el código:

from flask import Flask 
app = Flask(__name__) 

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

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

Esta es una respuesta anterior, pero Flask sigue siendo una gran herramienta para obtener rápidamente un script para escribir en la web. – Mike

2

Django es un gran webframework, pretende incluir un montón de cosas becaus eYou menudo ellos necesita, incluso aunque a veces no.

Mira a Pyramid, anteriormente conocido como BFG. Es mucho más pequeño. http://pypi.python.org/pypi/pyramid/1.0a1

Otros microframeworks a mirar son aquí: http://wiki.python.org/moin/WebFrameworks

Por otro lado, en este caso, es probable que sea también un exceso. Parece que puede ejecutar el script una vez cada diez minutos, y escribir un archivo HTML estático, y simplemente usar Apache.

+0

Tiene razón, la mayoría de las soluciones son exageradas. Realmente solo necesito ejecutar el script una vez para analizar un sitio con algunos datos que quiero. Estoy buscando cómo convertir esos datos (después de haberlos escabechado, o tenerlos en la memoria, o lo que sea) en una tabla ordenable. – Jonathan

+0

@Jonathan: ¿Tal vez un buen Javascript? No lo haría, pero ya lo hice Conozco algunas webframeworks, así que las usaría, no hay una curva de aprendizaje para mí. :) –

6

¿Has visto bottle framework? Es un micro framework y muy simple.

0

Si usted no necesita ninguna intervención del navegador, esto suena como una página web casi estática que simplemente cambia una vez al día. Solo necesitará alguna forma de extraer html de su script, en un lugar donde su servidor web pueda acceder a él.)

De modo que usaría alguna forma de templating; si necesita alguna estructura por encima de la página única, hay static site/blog generators que puede alimentar su salida en, digamos, formato Markdown, y llame a su make html o similar.

1

Si no está dispuesto a escribir su propia herramienta, hay una herramienta bastante avanzada para ejecutar sus secuencias de comandos: http://rundeck.org/ Es bastante simple de iniciar y se puede configurar también para escenarios complejos. Para el requisito de vista personalizada (con resultados ordenables), creo que puede implementar un plugin simple para traducir el resultado del script en elementos html.

Además, para configuraciones simples podría recomendar mi propia herramienta: https://github.com/bugy/script-server. No tiene toneladas de características, pero es muy fácil para los usuarios finales y admite la ejecución interactiva.

Cuestiones relacionadas