Welche Webframeworks lassen sich mit CGI nutzen?

Django, Flask, Bottle, WSGI, CGI…
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Hallo,

da ich überlege ein kleine Verwaltung zu bauen, der vorhandene Webspace aber nur
CGI bietet (kein FastCgi, kein mod_python und auch kein WSGI) stellt sich mir die Frage,
welche Webframeworks dafür gängig wären.


Das ganze ist eine Vereinsverwaltung, die mehr oder weniger sich um die datenbank-daten zentriert.
Wahrscheinlich wäre Turbogears passend, aber ich konnte nichts finden ob das irgendwo nur mit CGI auskommt.

Davon abgesehen, habe ich praktisch keine übung mit python webframeworks.

Was könnt ihr empfehlen?

Danke
Benutzeravatar
Manchotix
User
Beiträge: 54
Registriert: Samstag 14. Januar 2012, 19:54

Heyho,

soweit mir bekannt ist gibt es kein gutes oder weit verbreitetes Webframework was auf cgi setzt, die meisten verwenden halt Wsgi(bottle, Flask......), weil man auch kein Framework für Cgi braucht.
Von daher würde ich sagen das du dir die Cgi Scripts selber schreibst oder einen anderen anbieter(vielleicht für kleines geld auch einen V-Server) wählst, aber auch über Cgi kannst du dir ein Datenbank Backend schreiben.

Turbogears ist auch Wsgi !
- Über Fehler sollte man sich freuen als über das richtige Ergebnis denn wir Menschen können nur aus den Fehlern lernen-
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

WSGI und CGI sind kompatibel, du brauchst nur einen Wrapper um die Anwendung über CGI aufzurufen wie z.B. wsgiref.handlers.CGIHandler
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Django kann man auch mit CGI fahren. Empfehlenswert ist CGI aber generell nicht. Beim debugging kann es hilfreich sein, aber produktiv einsetzten ist halt relativ langsam.

Im Grunde reicht das folgende fast aus:

Code: Alles auswählen

from wsgiref.handlers import CGIHandler
from django.core.handlers.wsgi import WSGIHandler
CGIHandler().run(WSGIHandler())
Ich würde empfehlen einen anderen Webspache zu suchen. z.Z. nutzte ich http://uberspace.de/

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Alternativ denke ich über Turbogears auf OpenShift nach.

Das hosting ist gratis (für 3 tiers) - und 512 mb RAM / 1GB storage sollte locker reichen.

Hat jemand erfahrung damit?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

"Lebt" Turbogears noch?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

jens hat geschrieben:"Lebt" Turbogears noch?
Im Januar ist noch eine neue Version erschienen. Für mich persönlich ist TurboGears allerdings seit Jahren tot.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Bin jetzt nicht so auf dem Laufenden. Aber ich habe das Gefühl das es neben Django nur noch die kleinen "du suchst dir alles zusammen" Frameworks gibt.

Liege ich da falsch?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

jens hat geschrieben:Bin jetzt nicht so auf dem Laufenden. Aber ich habe das Gefühl das es neben Django nur noch die kleinen "du suchst dir alles zusammen" Frameworks gibt.
Den Eindruck habe ich auch. Entweder man nimmt das Monster (Django), das Monster aus einem schlechten B-Movie (TurboGears) oder ein kleines knuddeliges Etwas (z.B. Bottle). Dazwischen gibt es irgendwie nichts - aber mal ernsthaft gefragt: Warum sollte es da auch etwas geben?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Momentan am populärsten dürften Django, Flask und Pyramid sein. Wenn man von denen als Top 3 ausgeht, gehören effekiv alle brauchbaren größeren Frameworks zu den beliebtesten.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

OK, also das ganze ist jetzt schon unüberschaubar genug ;)
Klingt schwer als wenn aus aktualitätsgründen alles auf Django zeigt? ;)

Was würdet ihr für eine Vereinsverwaltung (mit sehr speziellen logiken teilweise) empfehlen?
Das ganze ist im Prinzip eine Mitgliedereingabe, bezahlt-status eingabe und statistik auswertung (wer wie oft da etc).
Perspektivisch soll aber später eine User-Verwaltung hinzukommen mit applikations-rollen.

Es soll möglichst schnell implementierbar sein und nicht Monatelange Framework-einarbeitung erfordern.
Ich habe auch keine Erfahrung mit Python Web-Frameworks.
In der OpenShift cloud wäre meiner Meinung nach eine geeignete Hosting-möglichkeit, da vorerst gratis.

Als Datenbank schwebt mir entweder MongoDB oder MySQL vor.

Mir ist durchaus bewusst das die Empfehlungen jetzt gewaltig auseinander gehen werden, daher bitte
noch eine kurze Begründung warum.


Danke
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mad-Marty hat geschrieben: Es soll möglichst schnell implementierbar sein und nicht Monatelange Framework-einarbeitung erfordern.
Ich habe auch keine Erfahrung mit Python Web-Frameworks.
Das beißt sich ein wenig... gerade wenn Du noch keine Erfahrung hast, empfiehlt sich eigentlich Django, gerade *weil* es Dir so ziemlich alles abnimmt, was Du bei einem Microframework separat zusammenstellen musst. Wenn Du obendrein noch keine große Erfahrung allgemein in Sachen Web-Programmierung / Technologien hast und dazu noch ein Python Anfänger bist, kann es schnell sein, dass Du Dich an dem Projekt übernimmst.

Einarbeiten musst Du Dich so oder so - bei Django erscheint der Umfang zunächst größer, weil da eben Dinge wie ORM, Formular-Lib, Authentifizierung und Autorisierung, usw. dabei sind - bei Microwebframeworks a la Flask oder Bottle musst Du Dir hingegen noch viel mehr Mühe machen, Dir Libs dafür selber heraus zu suchen und in Deine Toolchain einzubauen. Bei Django ist das eben aus einem Guss.

Sollte der produktive Einsatz eher nebensächlich sein, dann ist ein Projekt, das einen motiviert natürlich Gold wert als Hilfe zum Einstieg in eine Sprache.

Wenn der Produktiveinsatz wichtig ist: Kennst Du JVerein? Wenn nein, schau Dir das mal an... ich hatte vor zwei drei Jahren mal in meinem Heimatverein einführen wollen für die Verwaltung.

Ich gebe bei einem Produktiveinsatz noch folgendes zu bedenken: Wenn bei einem Webprojekt Personendaten eine Rolle spielen, so wiegt jede Sicherheitslücke schwerer als bei anderen Webprojekten. In diesem Falle wäre es ggf. ratsam, das ganze nur lokal ablaufen zu lassen - selbst wenn man die GUI als Webinterface gestaltet.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Hyperion hat geschrieben:
Mad-Marty hat geschrieben: Es soll möglichst schnell implementierbar sein und nicht Monatelange Framework-einarbeitung erfordern.
Ich habe auch keine Erfahrung mit Python Web-Frameworks.
Das beißt sich ein wenig... gerade wenn Du noch keine Erfahrung hast, empfiehlt sich eigentlich Django, gerade *weil* es Dir so ziemlich alles abnimmt, was Du bei einem Microframework separat zusammenstellen musst. Wenn Du obendrein noch keine große Erfahrung allgemein in Sachen Web-Programmierung / Technologien hast und dazu noch ein Python Anfänger bist, kann es schnell sein, dass Du Dich an dem Projekt übernimmst.

Einarbeiten musst Du Dich so oder so - bei Django erscheint der Umfang zunächst größer, weil da eben Dinge wie ORM, Formular-Lib, Authentifizierung und Autorisierung, usw. dabei sind - bei Microwebframeworks a la Flask oder Bottle musst Du Dir hingegen noch viel mehr Mühe machen, Dir Libs dafür selber heraus zu suchen und in Deine Toolchain einzubauen. Bei Django ist das eben aus einem Guss.

Sollte der produktive Einsatz eher nebensächlich sein, dann ist ein Projekt, das einen motiviert natürlich Gold wert als Hilfe zum Einstieg in eine Sprache.

Wenn der Produktiveinsatz wichtig ist: Kennst Du JVerein? Wenn nein, schau Dir das mal an... ich hatte vor zwei drei Jahren mal in meinem Heimatverein einführen wollen für die Verwaltung.

Ich gebe bei einem Produktiveinsatz noch folgendes zu bedenken: Wenn bei einem Webprojekt Personendaten eine Rolle spielen, so wiegt jede Sicherheitslücke schwerer als bei anderen Webprojekten. In diesem Falle wäre es ggf. ratsam, das ganze nur lokal ablaufen zu lassen - selbst wenn man die GUI als Webinterface gestaltet.

Es mangelt nur an der Webframework-Erfahrung in Python, da ich das nie mit Python versucht habe.
GWT oder Portlet ist mir allerdings zu heavy für das umfeld, weil man eben keinen ApplicationServer fürn appel und n ei bekommt.
(Ausserdem wollt ich das schon immer mal mit Python-Webanwendungen probieren!)
Was ist eigentlich mit Zope?

Und ja, prinzipiell ist ja bei einem Framework die Sicherheitsthematik relativ gut abgedeckt, da diverse Vorgaben und Beispiele existieren.

Den Link schau ich mir gleich mal an!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mad-Marty hat geschrieben:(Ausserdem wollt ich das schon immer mal mit Python-Webanwendungen probieren!)
Wie ich schon schrieb sind solche Vorhaben natürlich ein Quell der Motivation und alleine dadurch in sich wertvoll ;-)
Mad-Marty hat geschrieben: Was ist eigentlich mit Zope?
Da fällt mir der alte Werbespruch ein "Wer ist eigentlich Paul?" :mrgreen: Also hier im Forum ist Zope seit dem ich aktiv mitlese kaum aufgetaucht... und von BlueBream habe ich erst gerade eben erfahren :twisted:
Mad-Marty hat geschrieben: Und ja, prinzipiell ist ja bei einem Framework die Sicherheitsthematik relativ gut abgedeckt, da diverse Vorgaben und Beispiele existieren.
Öh... naja, das kann man eigentlich *nicht* verallgemeinern. Bei Flask hindert Dich z.B. niemand daran, SQL-Injection zuzulassen... bei Django wird es alleine dadurch schwieriger einen solchen Fehler zu begehen, da Du ohne Mühe nicht am internen ORM vorbei kommst ;-) Verallgemeinern kann man solche Aussagen also nicht!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mad-Marty hat geschrieben:Es mangelt nur an der Webframework-Erfahrung in Python, da ich das nie mit Python versucht habe.
Dann würde ich zu Django raten, weil alles aus einer Hand: Sehr gute und umfassende Dokumentation. Außerdem entfällt dann schon mal die Evaluierungen, die man bei den kleinen Frameworks machen muß, beim zusammensuchen der Teilkomponenten. Wie z.B. welches ORM nehme ich denn jetzt? Siehe auch http://wiki.python-forum.de/Web-Framewo ... w-r_wen.3F

Einfach mal das Django Tutorial durcharbeiten und dann weiter sehen...

Ich denke aber mal eben so eine Vereinslösung bauen is nicht. Es sei denn du hast mal eben ein paar Wochen nichts anderes zu tun.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Ich hab mir das ganze mal angesehen, und frage mich gerade ob es ratsam ist, Django mit MongoDB zu nutzen.

Oder geht dabei zuviel von Django verloren?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Gegenfrage: Warum möchtest du gern eine schema-freie-Datenbank nutzten?

Die erste Wahl wäre wohl PostgreSQL und MySQL, siehe auch: https://docs.djangoproject.com/en/1.5/ref/databases/

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

>>Gegenfrage: Warum möchtest du gern eine schema-freie-Datenbank nutzten?

weil ich das mal probieren wollte, und die möglichkeit zusätzliche attribute anzulegen ohne großes
Datenbankmigrieren interessant finde.
Insbesondere, weil es ja durchaus schnell nötig werden kann zusätzliche attribute zu speichern.

Allerdings nimmt South einem wohl recht viel vom Schemaumbau ab ...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wenn du bei Django das ORM umgehst, dann geht recht viel Funktionalität verloren, das würde ich nicht machen wollen. Zudem MongoDB ja eigentlich der Running Gag ist unter den NoSQL-Datenbanken ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Leonidas hat geschrieben:Zudem MongoDB ja eigentlich der Running Gag ist unter den NoSQL-Datenbanken ;)
Warum?
Ich dachte eher das ding ist derzeit heftig gehyped?
Antworten