web-framework für kleinere sites

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
zero-one
User
Beiträge: 58
Registriert: Dienstag 20. Mai 2008, 20:52

Hi,

ich komme von PHP und würde gerne in die Webentwicklung mit Python einsteigen... ich habe auch schon ein wenig im Internet rumgelesen und versucht mich nen bissle zu informieren.

Nun mir geht es darum ob Ihr mir ein kleines Framework empfehlen könnt mit dem man schnell kleinere Firmen Webseiten und/oder Blogs erstellen kann.

So wie ich es verstehe is im normalfall the weapon of choice Django... ich nehme an für große seiten ist des bestimmt kaum zu schlagen, jedoch frage ich mich obs bei kleineren Seiten ned irgendwie ist als ob man mit Kanonen auf spatzen ballert.

Hab dann noch gelesen das viele leute Werkzeug als kleines "framework" empfehlen aber um ehrlich zu sein steige ich da nicht so ganz durch.. und es scheint auch wohl ned wirklich viel doku dazu zu haben.

mir gehts jetzt ned darum aufzulisten welche frameworks es für python gibt, sondern eher um tips und evl. erfahrungsberichte...

danke :)
BlackJack

Schau Dir mal CherryPy an. Oder Werkzeug, wenn's wirklich klein sein soll.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Hm meine Erfahrung geht fast in die entgegengesetzte Richtung. Bei kleinen 0815 Seiten bin ich eher froh um ein Framework wie Django als bei einem grossen Projekt welches spezielle Anforderungen hat ;)

Wenn du ein kleiner Framework (eher eine Library) suchst kann ich dir Werkzeug ans Herz legen. Klein aber fein :)

Gruss,
Jonas
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich stimme veers da zu. Für kleine Seiten ist Django am besten geeignet, wenn es größer wird und flexibler sein muss, dann reicht Django nicht mehr. Bedeutet: das was Django bietet, hilft einem nicht weiter, man braucht dinge die es nicht bietet. Das was es kann wird dann eher zum Hindernis.

Dann greift man eher zu anderen Frameworks. Wie Werkzeug. Allerdings erfordert Werkzeug wohl ein wenig mehr Erfahrung in der Webprogrammierung.

That said, nutze ich Django für große Seiten und Werkzeug für kleine. Als Ausrede habe ich zu bieten, dass es damals Werkzeug noch nicht gab, als ich die begonnen habe und Django nun nicht so schlecht ist um den Aufwand zu rechtfertigen auf Werkzeug umzusteigen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Diese pauschale Aussage django wäre besser für kleine nicht aber für große Projekte geeignet ist so nicht richtig.
Was sind überhaupt kleine und große Projekte? Es hat zumindest nichts damit zu tun, wie viele Clicks hinterher entstehen.

Richtiger ist, das django gut für Projekte geeignet ist, für die django konzipiert wurde. Das ist alles in Richtung content management. Wobei es bei sehr vielen Web Anwendungen genau darum geht ;)

Aber selbst, wenn man auf viele Dinge, die django von sich auch bietet, verzichtet, kann man es IMHO sehr gut nehmen. Schließlich kann man das meiste abschalten.

Ich empfehle die Wiki Seite: [wiki]Web-Frameworks[/wiki] Auf diese gibt es Links zu anderen Forum Thread mit der selben Frage...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo zero-one!

Willkommen im Python-Forum!
zero-one hat geschrieben:schnell kleinere Firmen Webseiten und/oder Blogs erstellen kann
Das ist zu allgemein. Was sind kleinere Firmen-Webseiten? Entscheidend ist eher, wie dynamisch die Website werden soll. Für viele sind statische HTML-Seiten und ein CGI-Skript für das Kontaktformular vollkommen ausreichend.

Ein Blog ist da ganz etwas anderes. Ein Blog ist von vorne bis hinten dynamisch. Die Daten stehen nicht in statischen HTML-Seiten, sondern meist in Datenbanken. Um "schnell" mal einen Blog zu programmieren, wirst du wahrscheinlich mit Django und Co. recht gut fahren. Django ist irgendwie voll auf Datenbank ORM fixiert. Also nichts für Leute, die lieber die Power aus Datenbanken raus holen wollen, sondern für die, die sich nicht um Datenbanken kümmern wollen, sie aber trotzdem brauchen um damit eine Web-Anwendung zu entwickeln.

Ich persönlich bin jemand, der sich von diesen AllYouWant-Komplettpaketen losgesagt hat. Ich hatte so meine Erfahrungen mit Plone und dem zugehörigen Archetypes-Framework. Einfache Dinge lassen sich mit solchen Komplettpaketen wirklich sehr schnell entwickeln. Aber so bald du etwas anpassen musst, musst du dich in die Tiefen dieser Komplettpakete einarbeiten und Hooks ansetzen um trotz eigener Änderungen, das Komplettpaket nicht auseinander fliegen zu lassen. Diese Erfahrung hat mich während der Entwicklung so stark gebremst und so viel Geld gekostet, dass ich seither lieber ein kleines Basis-Framework benutze und mir für jeden Verwendugszweck die Tools selber aussuche.

Ich verwende CherryPy als Basis-Framework. Es bietet mir die Codegrundlage für die Webentwicklung. Und entlastet mich zusätzlich in Sessionhandling und Authentifizierung. CherryPy ist voll WSGI-Kompatibel. Das bedeutet, es hält sich an diesen Standard und läuft überall dort, wo man WSGI als Webschnittstelle einsetzen kann. --> CGI, FCGI, mod_python, mod_wsgi, usw.

WSGI hat auch noch den Vorteil, dass man mehrere WSGI-Anwendungen hintereinander schalten kann. Das bedeutet, dass zuerst die eine Anwendung die Daten bekommt, diese filtern und verändern kann und dann an die nächste WSGI-Anwendung weitergibt. So kann man auch andere WSGI-Anwendungen einsetzen, die z.B. nur für das Sessionhandling, Caching, für die Komprimierung, usw. zuständig sind. Man ist nicht mehr darauf angewiesen, dass ein Framework alles kann. Man sucht sich die Spezialisten aus und verwendet die, die einem am besten passen.

Bei kleinen Frameworks wie Werkzeug oder CherryPy ist es irgendwie einfacher...

Also mein Fazit: AllYouWant-Frameworks wie z.B. Django lassen dich sehr schnell eine Anwendung entwickeln. Nur das Anpassen der Anwendung wird später schwieriger, da vieles vom Framework vorgegeben wird.
Einfachere Frameworks wie z.B. Werkzeug oder CherryPy nehmen dich am Anfang nicht so sehr an der Hand. Erste Anwendungen sind nicht so schnell fertig wie bei den Großen. Dafür gleicht sich das dann durch die gewonnene Flexibilität aus. Wenn man z.B. nicht das Framework zum Erstellen eines Formulares herangezogen hat, dann muss man sich später nicht mit dessen Einschränkungen herumschlagen.

mfg
Gerold
:-)

PS: http://halvar.at/python/cherrypy_cheetah/
.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich hab mal versucht ein wenig Hilfe bei der Entscheidung "Batteries Included Framework" <-> "Minimalisten Framework" zu geben:

[wiki]Web-Frameworks#WelchesFrameworkFrWen[/wiki]

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Hmm. Warum genau ist Werkzeug ein Framework?
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Es ist selbst kein Framework, aber es ist doch wohl die Grundlage um sich ein Framework aufzubauen, oder nicht?
In der Liste taucht es nur als Beispiel auf. Kannst auch was andere hin schreiben ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

jens hat geschrieben:Diese pauschale Aussage django wäre besser für kleine nicht aber für große Projekte geeignet ist so nicht richtig.
Hat auch keiner pauschal so gesagt. ;)
jens hat geschrieben:Was sind überhaupt kleine und große Projekte? Es hat zumindest nichts damit zu tun, wie viele Clicks hinterher entstehen.
Klein/Gross bezog sich auf die Komplexität.
Nicht auf die Anzahl an Zeilen, Besucher oder Seiten ;)

Zum Minimal(isten) Framework:
Ist das nicht schon fast ein Widerspruch? ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
zero-one
User
Beiträge: 58
Registriert: Dienstag 20. Mai 2008, 20:52

danke für die vielen antworten. Wie gesagt werkzeug habe ich mir schonmal kurz angesehen.. allerdings ist es nicht so wirklich einsteiger/umsteigerfreundlich denn es ist nicht allzuviel doku vorhanden... und das was es auf der projekt webseite gibt is recht knapp gehalten...

kann mir evl. jemand nen tipp geben wie man am besten an werkzeug rangeht um damit einigermasen klarzukommen?

ansonsten wenns garnicht geht werd ich mir mal cherrypy genauer ansehen...

danke und gruesse zero-one
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

zero-one hat geschrieben:danke für die vielen antworten. Wie gesagt werkzeug habe ich mir schonmal kurz angesehen.. allerdings ist es nicht so wirklich einsteiger/umsteigerfreundlich denn es ist nicht allzuviel doku vorhanden... und das was es auf der projekt webseite gibt is recht knapp gehalten...
Also ich finds recht umfassend. Hast du das Tutorial durchgemacht und die Beispielprojekte angesehen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
zero-one
User
Beiträge: 58
Registriert: Dienstag 20. Mai 2008, 20:52

ja ich habe das tutorial durchgemacht. aber es gibt einfach einige sachen die sich mir nich erschliessen.

zb. dieses

Code: Alles auswählen

local.application = self
es steht zwar da das mans braucht aber halt irgendwie nix genaues...

Code: Alles auswählen

local = Local()
local_manager = LocalManager([local])
application = local('application')
was diese locals machen ist mir auch schleierhaft...

auch frage ich mich weshalb die sqlalchemy connection so kompliziert aussieht

Code: Alles auswählen

session = scoped_session(lambda: create_session(application.database_engine,
                         transactional=True), local_manager.get_ident)
ich finde das tutorial nen bissle oberflaechlich ich verstehe zwar grob was dort die einzelenen teile machen... aber so genau versteh ich dann doch ned was genau was macht was man wozu braucht und so weiter... das grosse ganze erschliesst sich mir einfach nicht...

ich hoffe jemand versteht was ich meine ^^
lunar

mitsuhiko hat geschrieben:Hmm. Warum genau ist Werkzeug ein Framework?
Um diese Frage zu beantworten, müsste man Begriffe wie "Framework", "Toolkit" und so weiter erstmal genau definieren ;)

@zero-one
Nun ja, dafür ist der Rest der Doku da. Die "Context locals" haben sogar einen eigenen Punkt in der Übersichtsseite, der dich zur Dokumentation der locals führt.

Die Werkzeug-Dokumentation richtet sich an Leute, die Erfahrung mit Python haben und deswegen daran gewohnt sind, Dokumentation zu lesen. Als Einstieg und Referenz für erfahrene Programmierer ist sie hervorragend. Wenn du dich nicht zu dieser Klientel zählen kannst, dann musst du grundlegender einsteigen, mit Werkzeug spielen und experimentieren und so Erfahrung sammeln, bevor du dich an richtige Projekte wagst.

Was die Dokumentation nicht kann und auch nicht will, ist einen vollständigen Überblick zu verschaffen. SQLAlchemy beispielsweise ist ein eigenes Projekt mit eigener Doku und wird in der Werkzeug-Doku nicht separat vorgestellt. Auch werden da keine Python-Grundlagen erklärt. Dafür wiederum gibt es Tutorials und die offizielle Dokumentation.

Du musst dich halt daran gewöhnen, dass Werkzeug nicht alles liefert, und du deswegen für ORM oder Templating separate Pakete benötigst, die wiederum eigene Dokumentation haben.

"All inclusive" gibts nur bei Django, mit den genannten Nachteilen ;)
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

zero-one hat geschrieben:Hab dann noch gelesen das viele leute Werkzeug als kleines "framework" empfehlen aber um ehrlich zu sein steige ich da nicht so ganz durch.. und es scheint auch wohl ned wirklich viel doku dazu zu haben.
Öhm, meiner Ansicht nach ist genau das Gegenteil der Fall. Nur weil nicht jeder Hanswurst ein paar schlechte Hacks veröffentlicht wie in der PHP-Welt üblich, muss es nicht schlecht dokumentiert sein. Die Website und der Code selbst bieten Informationen unterschiedlicher Abstraktion, mit und ohne Zusammenhänge und Details. Alleine das Tutorial und die "schau unter die Haube"-Links sind schon sehr viel wert. Wenn ich bedenke, wie lange ich gebraucht habe, um Paste zu verstehen (das manchmal übrigens auch den Namen "Twisted" verdient hätte), kann ich Werkzeug dagegen nur empfehlen.

mitsuhiko hat geschrieben:Hmm. Warum genau ist Werkzeug ein Framework?
Hihi, auf die Frage habe ich schon gewartet. Erinnert mich direkt an dein Bashing im Rahmen von Colubrid, direkt auf dessen Website ;)
Paste wird als "Metaframework" tituliert. Letztlich habe ich mir da dann und wann mal Gedanken drüber gemacht und bin zu dem Schluss gekommen, dass man durchaus je nach Definition schon "Framework" sagen kann, letztlich jeder weitere Gedanke aber Zeitverschwendung ist und man lieber was ordentliches damit anstellt, anstatt allzu akademisch drüber rumzuphilosophieren, in welche Schublade das Kind nun gehört.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Y0Gi hat geschrieben:
mitsuhiko hat geschrieben:Hmm. Warum genau ist Werkzeug ein Framework?
Hihi, auf die Frage habe ich schon gewartet. Erinnert mich direkt an dein Bashing im Rahmen von Colubrid, direkt auf dessen Website ;)
Paste wird als "Metaframework" tituliert. Letztlich habe ich mir da dann und wann mal Gedanken drüber gemacht und bin zu dem Schluss gekommen, dass man durchaus je nach Definition schon "Framework" sagen kann, letztlich jeder weitere Gedanke aber Zeitverschwendung ist und man lieber was ordentliches damit anstellt, anstatt allzu akademisch drüber rumzuphilosophieren, in welche Schublade das Kind nun gehört.
Colubrid war erheblich mehr Framework als Werkzeug. Also wenn Werkzeug ein (Meta-)Framework ist, dann muss cgi.py das auch sein :-) Werkzeug ist einfach eine nette Sammlung von wirklich nützlichen Dingen rum um Web Entwicklung. Auch wunderbar dazu geeignet andere Frameworks/Libraries zu erweitern. Ich verwend Teile davon mit Django (zb den Debugger und die HTTP Tools) und dem Zeug das wir bei Galt Networks verwenden (ein paar wissen was das ist ^^)
TUFKAB – the user formerly known as blackbird
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Kannst du da mal kurz zeigen, wie ich den Debugger am einfachsten in Django einbaue? Denn der ja ist ja ultra-pornös :D
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

audax hat geschrieben:Kannst du da mal kurz zeigen, wie ich den Debugger am einfachsten in Django einbaue? Denn der ja ist ja ultra-pornös :D
Steht im Wiki: http://dev.pocoo.org/projects/werkzeug/ ... WithDjango :-)
TUFKAB – the user formerly known as blackbird
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Huch, daran hatte ich nun noch nicht gedacht :D

Dankeschön!
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

mitsushiko: Ist ein Framework letztlich nicht nur eine Zusammenstellung von Konventionen und Utilities (die Erstere möglicherweise forcieren)?
Antworten