it-swarm-eu.dev

Comment créer une interface Web pour un simple script python?

J'apprends le python. J'ai créé des scripts que j'utilise pour analyser divers sites Web que je lance quotidiennement (au fur et à mesure de la mise à jour de leurs statistiques), ainsi que la sortie dans l'interpréteur Python. Je voudrais créer un site Web pour afficher les résultats. Ce que je veux faire, c'est exécuter mon script lorsque je vais sur le site et afficher un tableau triable des résultats.

J'ai examiné Django et je suis à mi-chemin du didacticiel, mais cela semble être une énorme charge de travail pour ce qui devrait être un problème simple. Je sais que je pourrais simplement écrire un script Python pour générer du code HTML simple, mais est-ce vraiment la meilleure solution? Je voudrais pouvoir trier le tableau par différentes colonnes.

J'ai des années d'expérience en programmation (C, Java, etc.), mais très peu d'expérience en développement Web.

Merci d'avance.

27
Jonathan

Si vous créez des pages non interactives, vous pouvez facilement configurer n'importe quel serveur Web moderne pour exécuter votre script python en tant que CGI. Au lieu de charger un fichier statique, votre serveur Web renverra la sortie de votre script python. 

Ce n'est pas très sophistiqué, mais si vous renvoyez simplement la sortie sans avoir besoin de la date de soumission du navigateur, c'est la méthode la plus simple (la mise à l'échelle sous charge est une autre histoire). 

Vous n'avez même pas besoin du module "cgi" de python, si vous ne recevez aucune donnée du navigateur. Rien de plus compliqué que cela et vous devriez utiliser un framework web.

Exemples et autres méthodes

  • Exemple simple : la partie la plus difficile est la configuration du serveur Web
  • mod_python : Réduit les frais généraux CGI (sinon, Apache exécute l'interpréteur python pour chaque résultat)
  • module python cgi : envoi de données à votre script python à partir du navigateur.

Tri

Tri latéral Javascript : J'ai utilisé cette bibliothèque javascript pour ajouter des tableaux triables. C'est le moyen le plus simple d'ajouter un tri sans nécessiter de travail supplémentaire ni d'autre HTTP GET.

Instructions:
Télécharger ce fichier
Ajouter à votre code HTML
Ajoutez class = "sortable" à la table que vous souhaitez rendre sortable
Cliquez sur les en-têtes pour les trier

13
Bradley Kreider

Avez-vous pensé à Flask? Comme Tornado, il s’agit à la fois d’un "micro-cadre" et d’un simple serveur Web. Il contient donc tout ce dont vous avez besoin. http://flask.pocoo.org/

Cet exemple (juste à partir de la page d'accueil) résume assez bien à quel point le code peut être simple:

from flask import Flask
app = Flask(__name__)

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

if __== "__main__":
    app.run()
18
AndrewF

Vous pourriez envisager Tornado si Django est trop onéreux. J'ai utilisé les deux et je suis d'accord pour dire que si vous avez quelque chose de simple/petit à faire et que vous ne connaissez pas Django, cela augmentera de manière exponentielle votre temps de production. D'autre part, vous pouvez «obtenir» Tornado en quelques heures et obtenir quelque chose de relativement simple en un jour ou deux sans expérience préalable. Au moins, ça a été mon expérience avec ça. 

Notez que Tornado est toujours un compromis: vous obtenez beaucoup de simplicité en échange de la multitude de fonctions et de raccourcis que vous obtenez avec Django. 

PS - en plus d’être un «micro-cadre», Tornado est également son propre serveur Web. Il n’ya donc rien à redire à wsgi/mod-cgi/fcgi .... écrivez simplement vos gestionnaires de demandes et exécutez-les. Assurez-vous de voir les démos incluses dans la distribution. 

8
jonesy

Avez-vous vu bouteille cadre? C'est un micro framework et très simple.

6
Tauquir

Django est un grand webframework, destiné à inclure beaucoup de choses parce qu’on en a souvent besoin, même si parfois ce n’est pas le cas. 

Regardez Pyramid, auparavant connu sous le nom de BFG. C'est beaucoup plus petit. http://pypi.python.org/pypi/pyramid/1.0a1

D'autres microframeworks à vérifier sont ici: http://wiki.python.org/moin/WebFrameworks

D'un autre côté, dans ce cas, c'est probablement aussi excessif. On dirait que vous pouvez exécuter le script une fois toutes les dix minites, écrire un fichier HTML statique et utiliser simplement Apache.

3
Lennart Regebro

Si j'ai bien compris vos exigences, vous trouverez peut-être que Wooey est très intéressant.

Wooey est une application Django qui crée des interfaces utilisateur Web automatiques pour les scripts Python: http://wooey.readthedocs.org

Ici, vous pouvez vérifier une démo: https://wooey.herokuapp.com/

3
Pitto

Si vous ne souhaitez pas écrire votre propre outil, il existe un outil assez avancé pour exécuter vos scripts: http://rundeck.org/ Il est assez simple à démarrer et peut être configuré pour des scénarios complexes comme well . Pour l'exigence d'affichage personnalisé (avec des résultats pouvant être triés), je pense que vous pouvez implémenter un simple plugin pour traduire le résultat du script en éléments html.

Aussi, pour des configurations simples, je pourrais recommander mon propre outil: https://github.com/bugy/script-server . Il n'a pas beaucoup de fonctionnalités, mais est très facile pour les utilisateurs finaux et supporte l'exécution interactive.

1
buggy

Si vous n'avez besoin d'aucune entrée de la part du navigateur, cela ressemble à une page Web presque statique qui ne fait que changer une fois par jour. Vous n'aurez besoin que d'un moyen d'extraire le code HTML de votre script, à un endroit où votre serveur Web peut y accéder.)

Donc, vous utiliseriez une forme de templating ; si vous avez besoin d’une structure au-dessus de la page, il ya les générateurs de sites/blogs statiques que vous pouvez alimenter votre sortie au format Markdown, par exemple, et appeler leur make html ou l’autre.

0
tiwo