Python Webprogrammierung Einbindung in HTML?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
mcdaniels
User
Beiträge: 168
Registriert: Mittwoch 18. August 2010, 19:53

Hallo,
erster Eindruck von Django -> :shock: ... alles neu, alles anders... und mächtig! Gibts da u.a. eine Buchempfehlung oder sollte man sich da an die Webresourcen halten?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Also ich würde versuchen, erst einmal das Tutorial durch zu *arbeiten*. Ich denke damit kommst Du schon recht weit :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
mcdaniels
User
Beiträge: 168
Registriert: Mittwoch 18. August 2010, 19:53

Ich bin grade in der ... Orientierungsphase. Die kommt bei mir nach der "oh mein Gott ich bin erschlagen Phase" ;). Kommt Zeit kommt (dank Tutorial) hoffentlich auch Rat.

Django scheint ja wirklich einiges selbst in die Hand zu nehmen. (Man muss ja nich mal die SQL Kommandos selbst basteln 8) )
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

mcdaniels hat geschrieben: Django scheint ja wirklich einiges selbst in die Hand zu nehmen. (Man muss ja nich mal die SQL Kommandos selbst basteln 8) )
Das muss man bei Bottle oder Flask auch nicht; nur musst Du dafür dann das SQL-Framework "SQLALchemy" bemühen - Django bringt seinen eigenen "ORM" (= object relational mapper) inkl. SQL-Abstraktionsschicht mit.

Daran siehst Du vielleicht, womit ich bei einem meiner Postings hinaus wollte, als ich schrieb, dass man sich bei den Mikro-Frameworks um viele selber kümmern muss.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

snafu hat geschrieben:Man kann höchstens sagen: "Ok, ich nehm jetzt z.B. Flask mit seinen Extensions und arbeite mich durch die einzelnen Dokus". Wäre dann halt nicht mehr alles aus einem Guß und man fragt sich am Ende wahrscheinlich, warum man nicht direkt Django benutzt hat. :lol:
Wenn ich Flask hat mit Jinja2 imho eine bessere Template Engine als Django. SQLAlchemy ist imho besser als das ORM von Django und flatland ist imho ebenfalls besser als Form Library. Klar hab ich die Funktionalität prinzipiell mit Django schon aber sich für ein Microframework zu entscheiden nur weil es kleiner ist, ist genauso lächerlich wie zu sagen es wäre sinnvoll Frameworks zu haben die nur aus einer Datei bestehen.
deets

Was die Micro Frameworks (bottle benutze ich selbst) aber nicht haben ist eine große, engagierte Community. Und das ist bei django eine großes plus. Nicht, weil das programmieren damit besser wäre. In Gegenteil, da ist viel Schatten. Aber einfach zb ein CMS einklinken zu können, das ist ein wichtiger Punkt. Natürlich nicht für jede Seite. Aber schon für viele.

Ich selbst ziehe rein technisch TurboGears2 oder Pyramid vor - aber zumindest ersteres ist Community-Wise fast tot. Und Pyramid hat auch noch nicht den Dampf dahinter.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Die Flask-Community würde ich nicht als klein bezeichnen, z.Z. befinden sich 273 Leute in #Pocoo auf Freenode, viele davon nutzen Flask (DasIch verbessere mich, wenn ich falsch liege).
the more they change the more they stay the same
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dav1d hat geschrieben:Die Flask-Community würde ich nicht als klein bezeichnen, z.Z. befinden sich 273 Leute in #Pocoo auf Freenode, viele davon nutzen Flask (DasIch verbessere mich, wenn ich falsch liege).
Also 10% der Django Community? 1% der Django Community? Ich stimme zwar auch zu, dass Django seine Schattenseiten hat (so finde ich die Templatesprache unzumutbar, aber man kann die auswechseln), dennoch für Anfänger ist die Struktur von Django ein großes Plus. Ich mein, der OP (no offense) wusste nicht dass es ORMs gibt. Wie lange würde es dauern bis der OP die Absicherungen gegen XSS, CSRF, Clickjacking etc entdeckt, die Django einfach so schon mitbringt?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

DasIch hat geschrieben:Klar hab ich die Funktionalität prinzipiell mit Django schon aber sich für ein Microframework zu entscheiden nur weil es kleiner ist, ist genauso lächerlich wie zu sagen es wäre sinnvoll Frameworks zu haben die nur aus einer Datei bestehen.
Den Einwand verstehe ich nicht so ganz. Was ist daran lächerlich, ein Mikroframework zu benutzen, weil man die Aufgeblähtheit von Django vermeiden will, wenn die Aufgabenstellung diesen Umfang nicht erfordert?

Wie schon gesagt: MFs gehen aber genau so auch für komplexere Projekte. Dann hat man sich meist bewusst für die Individualität des eigenen Zusammenstellens entschieden (oder bewusst für die angebotenen Extensions) oder aber das Projekt ist nach und nach auf Grundlage eines Mikroframeworks mitsamt zusätzlich eingebundener Bibliotheken gewachsen.

Mir ist halt nicht wirklich klar, worauf du hinaus willst...

Achso, und One-File-Frameworks (sprich: Bottle) haben zumindest den Vorteil, dass sie mal eben ins Entwicklungsverzeichnis kopiert, statt installiert werden können. Je nach Umgebung kann sowas manchmal wichtig werden. Ansonsten finde ich hinsichtlich der Übersicht, Wartbarkeit, Verständlichkeit des Codes usw eine Aufteilung in Module ebenfalls besser. Da geht Bottle halt seinen eigenen Weg. Die "Lächerlichkeit" dessen möchte ich aber bezweifeln.
mcdaniels
User
Beiträge: 168
Registriert: Mittwoch 18. August 2010, 19:53

...der OP (no offense) wusste nicht dass es ORMs gibt
Seh ich nicht als offense, keine Angst ;). Bin halt kein hauptberuflicher DB Entwickler oder Programmierer und habe mich noch nicht mit Frameworks beschäftigt.

Diverse Angriffsszenarien jedoch, kenne ich schon. Deren "Umschiffung" in Python jedoch, ist wieder ein anderes Thema :).

Ich werfe hier mal ein: Django bringt diese Absicherungen mit. Als Anfänger bekommt man davon dann allerdings nichts mit. Einerseits gut, dass Django davor schützt, andererseits aber auch wieder nicht, da der Anfänger dann nicht weiß, wie er das abseits von Django zu handhaben hat.

Wenn die Thematik jedoch so komplex ist, dass ein Anfänger ohnehin damit komplett überfordert ist, dann macht das Django meiner bescheidenen Meinung nach richtig. Ich bin mittlerweile mitten im Tutorial. Es ist (für mich) schon eine gewaltige Umstellung, muss ich sagen.

Meine "Projekte" (wenn man das so nennen kann) waren in php nie so groß, dass man tatsächlich auf div. Frameworks zurückgreifen musste.

Beim Thema Sicherheit und PHP drehte sich mir dann der Magen um... Ich hab das damals (und es ist schon viel zu lange her) so lange exzessiv verfolgt, bis mir der Spaß daran vergangen ist. (Wer kann mit Sicherheit sagen, dass das Programm, Script etc. wasserdicht ist...?, ..hat man was übersehen, was ist, wenn etwas in die Hose geht...)

Schließlich und endlich bin ich dann von der idealistischen Idee, mir selbst ein CMS zu schreiben auf Joomla "umgestiegen" (Wieso das Rad neu erfinden...)

Ich glaube jedenfalls, dass in Zukunft (ein dehnbarer Begriff) python php überholen wird.

LG
Daniel
Zuletzt geändert von mcdaniels am Donnerstag 31. Mai 2012, 10:32, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@mcdaniels: Du musst ja aber erst einmal Kenntnisse von allen möglichen Konzepten und Gefahren haben; als Anfänger kann man nicht alles auf einmal lernen. In der freien und "wilden" Mikro-Webframework-Welt musst Du also unmittelbar auch so etwas berücksichtigen, und gucken wie man sich mit gewählten Libs schützt, oder ggf. selber einen Schutz implementiert.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
mcdaniels
User
Beiträge: 168
Registriert: Mittwoch 18. August 2010, 19:53

Du musst ja aber erst einmal Kenntnisse von allen möglichen Konzepten und Gefahren haben; als Anfänger kann man nicht alles auf einmal lernen.
Ja genau! Habe oben noch etwas dazu geschrieben (edit) hatte sich überkreuzt.

Von daher gesehen mach dann Django sicher mehr Sinn!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

mcdaniels hat geschrieben:Ich werfe hier mal ein: Django bringt diese Absicherungen mit. Als Anfänger bekommt man davon dann allerdings nichts mit. Einerseits gut, dass Django davor schützt, andererseits aber auch wieder nicht, da der Anfänger dann nicht weiß, wie er das abseits von Django zu handhaben hat.
Naja, so transparent ist das ja nicht, wenn man die Dokumentation liest, dann steht da ja auch gegen was wie vorgegangen wird. :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mcdaniels
User
Beiträge: 168
Registriert: Mittwoch 18. August 2010, 19:53

Ich hab jetzt mal die ersten 2 Teile des Tutorial durch. Grundsätzlich verstehe ich es ja. Allerdings wäre ich nicht im Stande mit den erhaltenen Informationen - ohne immer wieder nachzusehen - etwas auf die Beine zu stellen.

Es stellt sich mir die Frage, ob ich nicht doch eher wieder zurück zu Konsolenapps wechseln sollte, bis ich das im Schlaf (und rückwärts) beherrsche... Ich kann mit Modulen, Funktionen und Klassen etc etwas anfangen, aber eventuell ist der Schritt im Moment doch etwas "überdimensioniert" für mich...

Ich komme mir bei den Beispielen in etwas so vor, wie wenn ein Pythoneinsteiger gleich mit Tkinter beginnt...

Das kann nicht gut sein ;)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

snafu hat geschrieben:Den Einwand verstehe ich nicht so ganz. Was ist daran lächerlich, ein Mikroframework zu benutzen, weil man die Aufgeblähtheit von Django vermeiden will, wenn die Aufgabenstellung diesen Umfang nicht erfordert?
Damit hast du recht. Allerdings ist es doch oft so, das die Anforderungen wachsen. Dann will man doch was mit einer DB machen, dann doch Usereingaben (forms) nutzten... Man nutzt den Zusatz X, dann Y... und irgendwann hat man sich doch ein richtiges Framework zusammen gestellt.

Der Vorteil von Django gegenüber selbst zusammengestelltem Framework:
* Nur eine Doku
* Nur eine Community

Mittlerweile kann man auch unzählige zusätzliche Django Apps nutzten. In PyLucid hatte ich erst alles selbst machen wollen. Dann ein paar kleine Frameworks genutzt, dann Django und nun immer mehr externe Apps dazu. Mittlerweile ist das schon eine lange Liste: http://www.pylucid.org/en/download/package-info/

Nächstes Ziel ist aus PyLucid noch mehr einzeln nutzbare Apps zu extrahieren.

Wenn man natürlich auf externe Apps zurück greift hat man wieder mehrere Stellen für Doku/Community. Aber man hat auch mehr an Funktionalität...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mcdaniels
User
Beiträge: 168
Registriert: Mittwoch 18. August 2010, 19:53

Irgendwie bleib ich grade wieder hängen... Mir sind teilweise die Vorgehensweisen im Tutorial (ab Part 3 / 4 ist nicht klar). Will heißen, dass ich den Code nicht interpretieren kann. Dies wiederum lässt mich vermuten, dass ich mit Vollgas wieder retour zur Konsole sollte (Grundlagen wälzen), was allerdings eher langweilig ist. Vor allem deshalb, da ich mich nicht motivieren kannt etwas zu "basteln" (ideenlos...)

In Summe komme ich (wiedermal) nicht vom Fleck, was mich nicht grade positiv stimmt. :roll: Naturgemäß schwirren da wieder die Gedanken durch den Kopf, ob man nicht fürs Programmieren geschaffen sein könnte...

Irgendwas mache ich definitiv falsch!

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

mcdaniels hat geschrieben: Vor allem deshalb, da ich mich nicht motivieren kannt etwas zu "basteln" (ideenlos...)
Was wolltest Du denn in Sachen Webapp umsetzen? Das ganze HTML ist ja nur Darstellung - die Logik kann man ja auch getrennt davon umsetzen. Insofern könntest Du doch evtl. genau diese Idee mit einem CLI-Interface umsetzen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
mcdaniels
User
Beiträge: 168
Registriert: Mittwoch 18. August 2010, 19:53

Servus,
dachte da zuerst an etwas Einfaches zb ein Gästebuch. (HTML + CSS beherrsche ich, obwohl das ja keine Programmiersprache ist ;) ) .

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

mcdaniels hat geschrieben:Servus,
dachte da zuerst an etwas Einfaches zb ein Gästebuch.
Na dann überlege Dir eben, welche Funktionalität es dafür braucht!

- man braucht wohl irgend eine Datenstruktur, in der man alle für einen Eintrag benötigten Daten zusammen hält; also entweder ein Dictionary oder eine Klasse aus dem Bauch heraus.

- man will Einträge anzeigen lassen

- man will ggf. immer nur eine gewisse Anzahl anzeigen lassen ("Pagination")

- man muss diese Datensätze irgend wie speichern, also musst Du über Persistenz nachdenken. Das kann erst einmal über JSON gehen, oder Du gehst direkt über SQL (SQLite) oder gar eine NOSQL-DB...

- man will einen neuen Eintrag schreiben

- man will ggf. einen löschen dürfen

Das ist doch alles wunderbar ohne "Firlefanz" als simple CLI-App machbar! Imho ähnelt das doch den klassischen Beispielen von Telefonbuch- oder Adressbuch-Programmen, die Anfänger immer gerne implementieren.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
mcdaniels
User
Beiträge: 168
Registriert: Mittwoch 18. August 2010, 19:53

Hallo,
werd wohl mal eher auf SQLite setzen. Da das aber nun absolut nix mehr mit dem Eröffnungspost zu tun hat mach ich ggf. einen neuen Thread auf.

LG
Daniel
Antworten