Formulare, Xml-Dokumente und Python. Newbie-Fragen.

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
_johannes
User
Beiträge: 20
Registriert: Montag 19. Juni 2006, 17:37

Freitag 2. November 2007, 20:28

Hallo,

Ich bin gerade dabei ein von mir programmiertes Hobby-Webseiten-Projekt umzustricken.
Es ist bisher mit PHP5 in Kombination mit XSLT erstellt worden, aber ich habe mich in Python eingelesen und schon einige Skripte erstellt und fühle mich damit wohler als mit PHP.

Ich habe folgendes vor:
Ein recht komplexes HTML-Formular oder vielleicht mehrere hintereinandergeschaltete HTML-Formulare, in die User was eingeben können. Diese Eingaben sollen dann in ein XML-Dokument bzw. dessen Tags eingehängt werden.

Später sollen die erstellten XML-Dokumente auch wieder über XSLT-Skripts in verschiedene HTML-Seiten geformt werden (je nach Abfragewunsch auch nur einzelne Teile der XML-Dokumente).
Dieser spätere Teil steht schon in PHP, den möchte ich dann nach Python transferieren, aber zunächst möchte ich mal die Formularsache ausprobieren.

Soweit ich es überblicke, werde ich auch ein User-Authentifizierungssystem brauchen und sowas wie Sessions, wenn der User mal ein Formular später weiterausfüllen möchte. Aber alles selber von grundauf neu zu programmieren ist vielleicht eher so, wie das Rad neu erfinden, da gibt es sicher vorgefertigte Teile, dachte ich mir und habe mich mal etwas mit Webframeworks beschäftigt.

Jetzt habe ich mich ein bisschen umgeschaut (auch hier im Forum) und bin ziemlich erschlagen, was es alles an Webframeworks, XML-Verarbeitungs-Modulen etc. gibt. Ich kann irgendwie nicht einschätzen was ich für mein Vorhaben brauchen kann.
Angeschaut habe ich mir Django (auch schon installiert und ein bisschen rumprobiert), das gefällt mir eigentlich sehr gut. Aber eigentlich brauchte ich bisher keine DB, da ich alles direkt in XML-Dateien abgespeichert habe. Für das Benutzer-Auth-System werde ich sicher eine benötigen, aber für die XML-Dateierstellung per Webformular nicht unbedingt. Wie ich das mit Django zusammenbringen soll, ist mir nicht klar.
Und was nehm ich zur xml/xslt-Verarbeitung: minidom, lxml,...? Geht das mit Django zusammen?
Oder anstatt Django besser "nur" cherrypy und Genshi?

Ich möchte hier keine fertigen Lösungen, nur einen guten Rat, wie ich das angehen und planen soll. Wichtig für mich wäre, das ich zu den eingesetzen Frameworks/Templatingsystems auch eine gute Dokumentation/Tutorials finde, da ich Autodidakt bin.
Kann mir da mal jemand den richtigen Weg aufzeigen?

Danke schon mal im Voraus.
_johannes
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Freitag 2. November 2007, 20:59

Für einen allgemeinen Django-Einstieg empfehle ich dir das Django Book.

Aus deinem Post wird nicht ganz klar, ob du verstanden hast, wie man mit HTML-Formularen in Django umgeht.
Dazu musst du wissen, wie man grundlegend mit dem Template System umgeht. Außerdem verwendet Django eine eigene Formlib.
Diese wird/wurde zur Zeit ausgetauscht und deshalb ist es besser, wenn du das neuere newforms-Modul dafür verwendest. Auf dieser Seite ist die Verwendung davon recht gut dokumentiert.
Du musst eine Klasse von `django.newforms.Form` ableiten, die dann ein verschiedene Felder hat, die du mit den Standard Feldern oder von eigen erstellten, erstellen kannst.
Dies füllt man dann mit Daten, indem man eine Instanz mit den eingegebenen Daten des Users (`request.POST`). Damit kann man jetzt Errors bezüglich der Eingabe ausgeben und sie - wie du es benötigst - in eine XML Datei schreiben, was du mit dem Standardmodul xml.etree.ElementTree machen kannst.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 2. November 2007, 21:32

Ich würde auch eher Django nehmen, damit kannst du natürlich auch jede andere Python-Library verwenden.

Eine alternative wäre es, eine leichtgewichtige WSGI-Library zu verwenden. Habe letztens ein Projekt mit Werkzeug (WSGI-Library), Jinja (Templates), Beaker (Sessions) und FormEncode (Form-Validation) auf die Beine gestellt und war eigentlich ganz zufrieden damit.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
_johannes
User
Beiträge: 20
Registriert: Montag 19. Juni 2006, 17:37

Freitag 2. November 2007, 23:42

Danke.

Das Djangobook hatte ich mir auch schon angesehen, nur ist dort gerade genau das Kapitel zu Formularen "ToBeAnnounced".
Ich werde mir mal die Seite zu newforms zu Gemüte führen. Bevor ich mich aber so richtig mit Django einlasse wollte ich noch folgende Frage klären:
Was ich noch nicht verstanden habe: Im Djangobook stand sowas ähnliches wie, dass ich, wenn ich Formulare mit Django benutzen möchte, auch eine Datenbank dafür benutzen muss.

Das wäre aber ja genau der Schritt, den ich vermeiden wollte. Dann müsste ich die Infos aus dem Formular in die DB einlesen, wieder aus der DB auslesen und in XML formen?
Das ist doch doppelt gemoppelt, oder bringt mir eine DB irgendwelche Vorteile?

(Ich hatte bei meinem Originalprojekt (das mit PHP) auch mal mit MySQL angefangen, bin dann aber davon abgekommen, da die Daten, die ich erfassen will, von der Struktur her multidimensional sind. Das auf ein relationales DBSystem abzubilden, habe ich damals nicht hinbekommen. Mit XML ging es ganz einfach, da konnte ich die Struktur direkt wie sie ist im Baum abbilden.)

Grüße und danke nochmal für Eure schnellen Antworten.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 2. November 2007, 23:49

_johannes hat geschrieben:Das Djangobook hatte ich mir auch schon angesehen, nur ist dort gerade genau das Kapitel zu Formularen "ToBeAnnounced".
Ja, weil als das Buch geschrieben wurde gerade auf newforms umgestellt wurde und die nicht irgendwelche obsoleten Kapitel schreiben wollten.
_johannes hat geschrieben:Was ich noch nicht verstanden habe: Im Djangobook stand sowas ähnliches wie, dass ich, wenn ich Formulare mit Django benutzen möchte, auch eine Datenbank dafür benutzen muss.

Das wäre aber ja genau der Schritt, den ich vermeiden wollte. Dann müsste ich die Infos aus dem Formular in die DB einlesen, wieder aus der DB auslesen und in XML formen?
Das ist doch doppelt gemoppelt, oder bringt mir eine DB irgendwelche Vorteile?
Nein, wenn du newforms nutzt, bist du nicht gezwungen das Django-ORM zu verwenden. Es hat aber manchmal Vorteile das zu machen, denn du kannst aus den Django-Models automatisch Formulare generieren lassen. In deinem Fall ist es natürlich weniger sinnvoll.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten