Benötige Feedback: HTML über Listen erzeugen

Du hast eine Idee für ein Projekt?
Antworten
Jochen Skulj
User
Beiträge: 9
Registriert: Samstag 5. März 2005, 18:57
Kontaktdaten:

Samstag 5. März 2005, 19:20

Ich spiele erst seit kurzem mit Python herum und möchte ein paar Skripte schreiben, die HTML generieren. Gibt es da bereits Standardlösungen?

Meine spontane Idee wäre, eine Struktur aus verschachtelten Listen aufzubauen, die man dann in HTML überführt. Das beispielhafte Erzeugen einer HTML-Datei sähe dann so aus:

Code: Alles auswählen

import simplehtml

doc = ['<>html',
        ['<>head',
          ['<>title', 'Hello HTML']
        ],      
        ['<>body',
          ['<>h1', 'Some Numbers' ], 
          ['<>ul',
            ['<>li', 'one' ],
            ['<>li', 'two' ],
            ['<>li', 'three' ]
          ],
          [ '<>h1', 'Some Links '],
          ['<>a', '@@href=http://www.jochenskulj.de', 'Visit me' ]
        ]    
      ]

html = simplehtml.buildHTML(doc)

output = simplehtml.FileOutput('hello.html')
html.writeOn(output)
output.closeFile()
Also: Die HTML-Struktur wird durch Listen abgebildet, Tags werden durch '<>' gekennzeichnet und Attribute durch '@@' (so als allerersten Ansatz).

Nun habe ich ein Python-Modul geschrieben, das hieraus HTML generiert. Zu finden:

http://www.jochenskulj.de/pub/simplehtml.py
http://www.jochenskulj.de/pub/htmlexample.py

Was haltet ihr von dieser Idee? Gibt es bessere/einfachere Wege, mit Python HTML zu erzeugen oder lohnt es sich, an meinem Ansatz weiterzuarbeiten? Ich find's eigentlich recht übersichtlich und könnte mir auch vorstellen, dass man es flexibel einsetzen kann. Was meint ihr?

Jochen
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Samstag 5. März 2005, 22:17

Jochen Skulj hat geschrieben: Ich spiele erst seit kurzem mit Python herum und möchte ein paar Skripte schreiben, die HTML generieren. Gibt es da bereits Standardlösungen?
<snip...>
Was haltet ihr von dieser Idee? Gibt es bessere/einfachere Wege, mit Python HTML zu erzeugen oder lohnt es sich, an meinem Ansatz weiterzuarbeiten? Ich find's eigentlich recht übersichtlich und könnte mir auch vorstellen, dass man es flexibel einsetzen kann. Was meint ihr?
Hallo Jochen!

Hier meine persönliche Meinung dazu:
Dein Ansatz ist sicher recht interessant, aber es gibt schon einige Systeme, die so etwas machen. Schau einfach mal hier rein: http://pythonwiki.de/PythonErweiterunge ... 588e260884

Ich habe darüber nachgedacht und mir ausgemalt, wie die Listenstruktur aussehen müsste, wenn ich ein paar verschachtelte Tabellen, Styles, Bilder, Buttons, Formulare, usw. in der HTML-Seite haben möchte. Schon bei einem Formular in einer Tabelle bin ich ausgestiegen -- der Knoten im Hirn wurde zu groß :oops: . Es wird zu komplex.

Ich bevorzuge eine gute Trennung zwischen HTML-Design und Logik, wie es z.B. mit der TAL (Template Attribute Language) machbar ist.

http://www.owlfish.com/software/simpleTAL/

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Jochen Skulj
User
Beiträge: 9
Registriert: Samstag 5. März 2005, 18:57
Kontaktdaten:

Sonntag 6. März 2005, 13:07

Hallo Gerold,
gerold hat geschrieben:Hier meine persönliche Meinung dazu:
Dein Ansatz ist sicher recht interessant, aber es gibt schon einige Systeme, die so etwas machen. Schau einfach mal hier rein: http://pythonwiki.de/PythonErweiterunge ... 588e260884
Danke für deine Hinweise. Ich werde mir die Sachen einmal ansehen.
gerold hat geschrieben:Ich habe darüber nachgedacht und mir ausgemalt, wie die Listenstruktur aussehen müsste, wenn ich ein paar verschachtelte Tabellen, Styles, Bilder, Buttons, Formulare, usw. in der HTML-Seite haben möchte. Schon bei einem Formular in einer Tabelle bin ich ausgestiegen -- der Knoten im Hirn wurde zu groß :oops: . Es wird zu komplex.
Das stimmt schon; komplexe Strukturen werden auch bei dieser Darstellung unübersichtlich. Meine Idee war, dass man in diesen Fällen unterschiedliche Funktionen implementiert, die dann jeweils Teillisten erzeugen. Etwa eine Funktion, die Tabellenspalten erzeugt, eine Funktion zum Zusammenbau der Tabelle und eine Funktion zum Zusammenbau des ganzen Dokumentes.

Viele Grüße, Jochen
Antworten