Meine erste web-app (Python): Einsatz von CGI, oder ein framework wie Django?
Ich will nicht zu belasten Sie alle mit den details, aber im Grunde bin ich ein 2. Jahr in compsci Studierende, die über keine Web-dev-Erfahrung.
Grundsätzlich möchte ich das erstellen einer kleinen "web-app", die Eingaben aus einem html-Formular, ein python-Skript und einige Berechnungen auszuführen, und erneut zeigen die Ergebnisse in Ihrem browser.
Als jetzt, ich habe das Formular und Skript gebaut. Jedoch, wenn ich versuche, um das Formular zu testen, statt auf dem das Skript läuft, mein browser versucht zu laden. Zu meinem Verständnis, dies ist ein cgi-Skript ein problem, und zwar muss ich einen web server aufstellen, um zu testen, dieses Skript.
Und hier waren bin ich stecken. Ich weiß wenig bis gar nichts über web-Server und wie Sie einzurichten. Auf top von, dass ich habe gehört, dass die GCI-scripting ist eine Sache der Vergangenheit, und erfordert großen Aufwand, um ordnungsgemäß ausgeführt.
Führt dies auf meine Fragen. Wie mache ich den Abschluss meiner app und testen mein cgi-Skript? Installiere ich apache und mess around mit ihm, oder sollte ich suchen in sowas wie die google app engine? Gibt es andere Möglichkeiten, um diese Aufgabe abzuschließen, ohne cgi-Skripts? Wo tun frameworks wie Django passen in diese?
- Ein bisschen eine falsche Dichotomie hier: Es gibt eine fülle von Gebiet zwischen Django und CGI. Ich würde persönlich empfehlen webapp2, die im Bundle mit der App Engine, und ist sehr leicht. FYI, die low-level vergleichbar mit CGI auf moderne (Python) - Architekturen ist WSGI, obwohl.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Django, während Sie schön, alles umfassende und gut unterstützte, ist manchmal zu viel für eine kleine web-Anwendung. Django will Sie spielen durch Ihre Regeln von Anfang an, haben Sie, um zu vermeiden, Dinge wie die Datenbank und die admin-panels, wenn Sie diese nicht benötigen. Es ist auch einfacher, mit Django zu Folgen, Ihre Projekt-layout, auch wenn es zu Komplex für eine einfache app.
Den so genannten micro-frameworks passen könnten, die Sie besser für Ihre kleine app. Sie werden auf der entgegengesetzten Prinzip: verwenden Sie das absolute minimum an features jetzt noch mehr hinzufügen, wie Sie benötigen.
Kolben basiert auf Werkzeug WSGI-Bibliothek und Jinja2-templates (letzteres umschaltbar), ist ausführlich dokumentiert (mit Hinweise für die virtualenv und Zeug) und gut geeignet für kleine und größere apps gleichermaßen. Es kommt im Bundle mit einer auto-nachladen der dev-server (keine Notwendigkeit für Apache auf dem dev-Maschine) und Werkzeug-powered interaktiven debugger. Es gibt Erweiterungen für Dinge wie HTML-Formulare und Datenbank-ORM.
Flasche ist so klein wie ein microframework bekommen kann, bestehend aus 1 (einer) Datei, dev-server enthalten. Legen Sie es in Ihrem Projekt Ordner und starten hacking. Die built-in SimpleTemplate-Template-engine ist umschaltbar, aber der dev-server ist flakier im Vergleich zum Fläschchen ist. Die Dokumentation ist weniger vollständig, und, meiner Meinung nach, die ganze Sache ist weniger Poliert und bequemer als Fläschchen.
In beiden Fällen verwenden Sie dev-server lokal und dann bereitstellen mit WSGI, die server-Schnittstelle für Python-web-apps, die sich beide frameworks unterstützen. Es gibt viele Möglichkeiten zum bereitstellen einer WSGI-app, Apache
mod_wsgi
als eine der beliebtesten.Ich würde ganz gehen mit Kolben, es sei denn, eine Abhängigkeit (Flasche) ist besser als drei (Kolben, Jinja2 und Werkzeug).
(Es sind viele andere Rahmenbedingungen als gut, so warten Sie für Ihre Nutzer zu kommen und erzählen Sie. Ich würde vorschlagen, um zu vermeiden,web.py: es funktioniert, aber es ist voller Magie, und ist unelegant im Vergleich zu Kolben oder Flasche).
Einen Weg, um zu arbeiten webapp schnell ist, indem Sie zuerst verstehen, und dann zu modifizieren, so etwas wie die App Engine " Gästebuch " - Beispiel. Dies hat den Vorteil, dass ein Großteil der sonst notwendigen überdruss der mit einem web-server und die Einrichtung einer Datenbank-server (vorausgesetzt, Sie benötigen Ausdauer) ist für Sie erledigt. App Engine bietet auch eine relativ flexible Entwicklungsumgebung. Es ist sicherlich nicht der einzige Weg zu gehen, und ich gebe zu Verzerrungen bei, die es empfehlen, aber es ist ziemlich geringe Reibung.
GCI-scripting ist kaum eine Sache der Vergangenheit, aber es ist nicht das, was die coolen kids tun. CGI hat den Vorteil, und der Fluch, Verfügbarmachen mehr von den raw-Sanitär. Es zwingt Sie zu verstehen, viel über die primitive (in der low-level-Sinne), web-Architektur, aber es ist auch ein bisschen eine große Bissen zu kauen, wenn Sie ein sofortiges problem zu lösen, können gelöst werden durch einfachere Mittel.
Scheint es den meisten python-web-Entwicklung zu sein scheint, gemacht von frameworks in diesen Tagen. Es gibt ein paar Gründe dafür:
einer fülle von ausgereiften tools. Django hat in user-auth, integrierte Datenbank-management, gebaut in Sitzungen, gebaut in gerade ungefähr alles, ORM, die können Sie nahtlos unterstützt ein paar Datenbanken.
Eingebauten Webserver. Die größeren python-frameworks wie django und pylons eingebauten Webserver. Django hat einen sehr einfachen webserver
python manage.py startserver
(das einfache), Dass macht es sehr einfach zu erstellen und zum Debuggen von Anwendungen. Es ist single-threaded, so fallen einem debugger in es ist schmerzlos,Großen Gemeinschaften. Wenn Sie eine django Frage wird sehr schnell beantwortet werden-der so-community ist riesig.
Das django-tutorial lernen Sie alle wichtigen Aspekte der Entwicklung. Es ist nur 4 Seiten, und Sie werden in der Lage sein, um Ihre app noch viel einfacher, als zu Lesen, lernen und tüfteln mit einem apache-setup.
https://docs.djangoproject.com/en/dev/intro/tutorial01/
Obwohl django jetzt vielleicht übertrieben, wenn Ihre app nur noch zu 1-form und ein Skript, um es zu verarbeiten. Durch eine nahtlose Test-framework ist es ziemlich einfach zu wachsen, die jedes Projekt. Ich habe noch nie verwendet, Kolben oder Flasche oder die andere microframeworks, aber ich würde im Hinterkopf behalten, wo Ihr Projekt wird in der Zukunft sein.
Was django dazu passt, es ist ein full-stack-framework-umfassende Darstellung (templates), Datenhaltung (server orm), Authentifizierung, middleware, Formen ... alles, was notwendig ist, um eine komplett-inclusive-web-Anwendung. Django und fast alle anderen python-frameworks implementieren, das wsgi-standard. Es ist eine Schnittstelle, die für das zusammenspiel zwischen Webserver. http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface es ist ziemlich trocken und werden Sie nie haben, um eine Schnittstelle direkt. Das ist das, was diese frameworks unter der Haube.
Warum setup und pflegen Ihre eigenen webserver, wenn Sie verwenden können app engine. Es hat eine ausgezeichnete SDK zum testen Ihres Codes. Hier ist ein Beispiel https://developers.google.com/appengine/docs/python/gettingstarted/handlingforms
Und Django finden Sie hier : https://developers.google.com/appengine/docs/python/gettingstarted/templates
Ich benutze lieber Jinja für das templating.
Django kommt mit seiner eigenen server, aber in Ihrem Fall würde ich empfehlen, apache und mod_python da es scheint, eine ziemlich einfache Website, die Sie gerade bauen.
Einrichten der Apache ist ein Kinderspiel und eine einfache Suche im web sollten Sie alle, die Sie benötigen.
Finden Sie mehr Informationen über mod_python hier Lesen Sie sich ein wenig auf und dann google nach einem tutorial, das Ihren Bedürfnissen passt.
mod_python
ist immer eine schlechte Idee. Es ist veraltet, zu Gunsten dermod_wsgi
.mod_python
und als solchemod_python
ist jetzt nicht mehr." Trotzdem, WSGI ist das - Schnittstelle für Python web-Anwendungen, ich sehe nicht ein, warummod_python
— eine Schnittstelle, die Kräfte, verwendet der Apache besser ist.