2010-03-07 9 views
7

Ich möchte Vorschläge für die beste Möglichkeit, Python-Skripte als Webseiten zu dienen, erhalten. Normalerweise würde ich gerne einen Weg für mich und meine Kollegen haben, einfache Webseiten mit minimalem Aufwand zu schreiben, dh wir konzentrieren uns auf die Geschäftslogik, z. B. das Erstellen einfacher Formulare usw. Möglicherweise mit einer Möglichkeit, Sitzungen zu verwalten, aber dies ist ein netter zu haben. Es muss nicht WYSIWYG sein, da sie Entwickler sind, aber wir sind beschäftigt und wollen nicht lange eine Idee in die Realität umsetzen. Es ist für den internen Gebrauch, so dass das Aussehen nicht vorrangig ist.Web-Server-Frameworks für Python Web Apps

Die zum Aktivieren erforderliche Software sollte einfach einzurichten und zu konfigurieren sein. Das Hinzufügen neuer Verzeichnisse und Python-Lib-Verzeichnisse sollte einfach sein.

Mein erster Instinkt ist Apache oder Tomcat mit mod_python. Alle Kommentare/Vorschläge sind willkommen. Danke im Voraus.

Edit - im Googeln stolperte ich auf Jython und versuchte dies in Kater. Es scheint, Seiten schnell zu laden, aber von der Befehlszeile dauert es ein Alter. Dies könnte eine Alternative sein. Schreiben Sie die Präsentation in jython-Servlets, und lassen Sie alle zu verwendenden Skripts von der Befehlszeile oder Webanwendung getrennt, damit sie mit vanilla python ausgeführt werden können. Plus als Java-Shop bietet dies eine Brücke in unsere Gläser. Wer möchte mir das ausreden?

Antwort

14

Der neue Standard ist WSGI (Web Server Gateway Interface) und ist mit mod_wsgi für Apache unterstützt.

Der Web-Server Gateway Interface definiert eine einfache und universelle Schnittstelle zwischen Web-Server und Web-Anwendungen oder Frameworks für den Python Programmiersprache.

Die beliebtesten Python Web-Frameworks unterstützen WSGI (Django, Pylons, CherryPy, ...).
Diese Frameworks können Ihnen helfen, Ihre Anwendungen schnell zu entwickeln.

Sie können CherryPy für sehr einfache Anwendungen verwenden. Here ist eine schnelle Wie ist Ihr Name Beispiel.

+0

ok, großartig.Was am einfachsten ist, einfache Seiten basierend auf der Eingabe von Dateien zu knacken und o/s-Level-Befehle auszuführen - ich glaube nicht, dass wir dafür sogar eine db-Verbindung benötigen. – Ben

3

Geben Sie Django ein Blick.

Von der Website:

"Django ist ein High-Level-Python Web-Framework, das die schnelle Entwicklung und sauber, pragmatisches Design ermutigt"

-1

Schauen Sie sich auch pinax. Es ist auf DJango aufgebaut und es wird Ihnen einen guten Start mit Ihrer Website geben.

7

Diese Art von Fragen führen normalerweise dazu, dass jedes bekannte Python-Web-Framework ein- oder zweimal erwähnt wird. Wie Desintegr hervorhebt, ist wsgi die Standardschnittstelle für Python-Webanwendungen. Allerdings, wenn es ein bisschen zu niedrig für Ihren Geschmack ist, empfehle ich pyramid. Hier ist eine einfache Web-App direkt aus der documentation. Kein Schnellstart erforderlich.

from pyramid.config import Configurator 
from pyramid.response import Response 
from paste.httpserver import serve 

def hello_world(request): 
    return Response('Hello world!') 

def goodbye_world(request): 
    return Response('Goodbye world!') 

if __name__ == '__main__': 
    config = Configurator() 
    config.add_view(hello_world) 
    config.add_view(goodbye_world, name='goodbye') 
    app = config.make_wsgi_app() 
    serve(app, host='0.0.0.0') 

Die Schönheit ist pyramid schön zum most complex applications vergrößern können, wenn nötig. Und ist nicht eigensinnig, also sehr flexibel.

Wenn pyramid zu viel Abstraktion ist, empfehle ich webob, die Sie als eine sehr dünne Abstraktion auf der WSGI-Spezifikation betrachten können.

+2

+1 für BFG. Das Motto lautet: "Bezahl für das, was du isst" bedeutet, wenn du dich nicht darum kümmerst, alles unter der Sonne zu machen (wie Django oder Turbogears), musst du es nicht importieren. Dies könnte der perfekte Rahmen für das OP sein: gerade genug, damit Sie sich nicht um WSGI kümmern müssen, aber es klingt wirklich so, als ob Sie nicht viel mehr brauchen. – RyanWilcox

+0

habe meine Antwort auf die Pyramide aktualisiert, da bfg jetzt von diesem und einem Teil des Mastenprojekts bekannt ist. –

-1

Sie können Spyce ausprobieren.

Spyce ist eine serverseitige Sprache, die elegante und effiziente Python-basierte dynamische HTML-Generierung unterstützt. Spyce ermöglicht die Einbettung von Python in Seiten ähnlich wie JSP Java einbettet, aber Spyce ist weit mehr als ein JSP Klon. Out-of-the-Box bietet Spyce Entwicklung so schnell wie andere moderne Frameworks wie Rails, aber mit einem zusammenhängenden Design statt ein Morast von Sonderfällen.

Spyces modulares Design macht es sehr flexibel und erweiterbar. Es kann auch als Befehlszeilenprogramm für statische Textvorverarbeitung oder als Web-Server-Proxy verwendet werden.

Spyces Leistung ist vergleichbar mit den anderen Lösungen in seiner Klasse.

0

Sie können sowohl mod_python als auch mod_wsgi vermeiden, indem Sie Tornado (tornadoweb.org) ausführen. Es ist der Server, der von Friendfeed verwendet wird. Ordnen Sie eine URL einer Klasse zu, erstellen Sie dann eine Klasse, die get()/post() -Methoden definiert (oder welche HTTP-Methoden Sie auch unterstützen möchten), und führen Sie sie einfach wie eine normale Python-App aus. Tornado ist der Webserver und hat das Wesentliche eines sehr einfachen "Frameworks". Schau dir die Demos an. Ich benutze Django bei einigen Projekten, aber ich benutze auch Tornado, und ich denke, wenn Ihre Anwendung wirklich einfach ist und Sie etwas gestern erledigen müssen, ist die Lernkurve, um etwas zu passieren jetzt ist nicht so belastend in Tornado wie es ist mit Django.

Das sagte, Django hat tolle Docs, und wenn Sie die Zeit haben, es zu lernen, ist die Auszahlung da.

5

Eigentlich klingt es so bottle ein ausgezeichneter Anwendungsfall für sein kann:

Beispiel-Code, den etwas

from bottle import route, run 

@route('/') 
def index(): 
    return 'Hello World!' 

run(host='localhost', port=8080) 
0

Sie können Appier versuchen (https://github.com/hivesolutions/appier). Hier ist ein Beispiel-App:

import appier 

class HelloApp(appier.App): 

    @appier.route("/", "GET") 
    def hello(self): 
     return "Hello World" 

HelloApp().serve() 

Und hier ist, wie Sie es ausführen:

pip install appier 
python hello.py 

Haftungsausschluss: Dieser Rahmen Teil des Open-Source-Portfolio von meiner Firma ist. Wir haben den Rahmen geschaffen, um den Code für unsere Beratungsarbeit so einfach und sauber wie möglich zu gestalten (um unsere Effizienz zu verbessern). Das Projekt ist sehr aktiv, da wir das Framework ständig nutzen. Der Clou ist jedoch, dass wir erst seit kurzem öffentlich darüber sprechen, also gibt es noch keine Community. Aus diesem Grund sind wir sehr offen für eine enge Zusammenarbeit mit Early-Bird-Entwicklern, um unsere Dokumentation zu verbessern und neue Funktionen hinzuzufügen.

Verwandte Themen