2009-10-10 10 views
17

Ich bin auf der Suche nach einem leicht implementierbaren HTML-Generator für Python. Ich fand diesesPython HTML-Generator

http://www.decalage.info/python/html 

aber es gibt keine Möglichkeit, CSS-Elemente (ID, Klasse) für Tabelle hinzuzufügen.

thx

Antwort

7

Wenn Sie eine programmatische Generierung anstelle eines Templatings wünschen, ist Karrigells HTMLTags Modul eine Möglichkeit; es kann z.B. das class Attribut durch den Trick von großgeschrieben seiner ursprünglichen (die ein reserviertes Wort in Python wäre), das heißt, unter Angabe der doc URL Ich habe gerade:

Attribute mit dem gleichen Namen wie Python Schlüsselwörter (Klasse, Typ) müssen aktiviert:

print DIV('bar', Class="title") ==> <DIV class="title">bar</DIV> 
5

HTML-Generation wird in der Regel mit einem der unendlichen Mengen von HTML-Templating Sprachen verfügbar für Python getan. Persönlich mag ich Templess, aber Genshi ist wahrscheinlich das populärste. Es gibt unendlich viele von ihnen, es gibt eine list, die höchstwahrscheinlich unvollständig ist.

Andernfalls können Sie lxml verwenden, wo Sie es in einer programmatisch XML-ish-Weise generieren können. Obwohl es mir schwer fällt, den Nutzen zu sehen.

+0

Als beiseite testen will: Genshi ist das Template-Engine von Trac verwendet. – retracile

5

Es ist der ehrwürdige HTMLGen von Robin Friedrich, das ist immer noch schwer zu finden, aber verfügbar here (datiert 2001, aber HTML hat sich nicht viel sich seitdem verändert ;-). Es gibt auch xist. Natürlich ist heutzutage die HTML-Erzeugung, wie Lennart hervorhebt, im Allgemeinen besser mit Templatiersystemen wie Jinja oder Mako.

+0

Heutzutage? Python Templating gibt es seit mindestens DTML, 1997. :) ZPT was seit 2001 besser ist. :) [Nur pingelig] –

2

Tatsächlich können Sie Objekten in HTML.py (http://www.decalage.info/python/html) beliebige Attribute wie id und class hinzufügen.

attribs ist ein optionaler Parameter der Table-, TableRow- und TableCell-Klassen. Es ist ein Wörterbuch mit zusätzlichen Attributen, die Sie festlegen möchten. Zum Beispiel stellt der folgende Code-ID und Klasse für eine Tabelle:

import HTML 
table_data = [ 
     ['Last name', 'First name', 'Age'], 
     ['Smith',  'John',   30], 
     ['Carpenter', 'Jack',   47], 
     ['Johnson',  'Paul',   62], 
    ] 
htmlcode = HTML.table(table_data, 
    attribs={'id':'table1', 'class':'myclass'}) 
print htmlcode 

Der gleiche Parameter kann mit TableRow und Tablecell-Objekte Format Zeilen und Zellen verwendet werden. Es existiert noch nicht für Spalten, sollte aber bei Bedarf leicht zu implementieren sein.

0

Sie könnten an einigen Python-HAML-Implementierungen interessiert sein. HAML ist wie HTML Kurzschrift und dauert nur ein paar Minuten, um zu lernen. Es gibt auch eine CSS-Version namens SASS.

http://haml.hamptoncatlin.com/

"Is there a HAML implementation for use with Python and Django" spricht über Python und HAML ein bisschen mehr.

Ich benutze HAML so viel wie möglich, wenn ich in Ruby programmieren.Und als Fußnote, gibt es auch einige Arbeit bekommen Module für Perl gewesen, die mit dem netten MVC Mojolicious arbeiten:

http://metacpan.org/pod/Text::Haml

4

Dies ist ein ultra-einfache HTML-Generator hat ich geschrieben. Ich benutze es Build-Zeit, um HTML zu generieren. Wenn man erzeugt HTML-Seiten zur Laufzeit dann gibt bessere Optionen

hier verfügbar sind, ist der Link

http://pypi.python.org/pypi/sphc

und ein schnelles Beispiel

>> import sphw 
>> tf = sphw.TagFactory() 
>>> div = tf.DIV("Some Text here.", Class='content', id='foo') 
>>> print(div) 

<DIV Class="content", id="foo">Some Text here.</DIV> 
3

Dominate eine HTML-Generation-Bibliothek ist, dass können Sie einfach Tags erstellen. In dominiert, reservierte Python Worte mit einem Unterstrich vorangestellt werden, so würde es so aussehen:

from dominate.tags import * 
t = div(table(_id="the_table"), _class="tbl") 
print(t) 


<div class="tbl"> 
    <table id="the_table"></table> 
</div> 

Disclaimer: Ich bin der Autor der dominate

3

Ok, hier ist ein anderer HTML-Generator, oder ich ziehe zu denken davon als Compiler.

https://pypi.python.org/pypi/python-html-compiler

Dies ist ein Satz von Basisklassen, die verwendet werden können, um Tags zu definieren und Attribute. Daher hat eine Tag-Klasse Attribute und Kinder. Kinder sind selbst Tag-Klassen, die Attribute und Kinder usw. haben. Außerdem können Sie Parameter festlegen, die mit Ihrer Root-Klasse beginnen und die verschiedenen Zweige aufarbeiten.

Damit können Sie alle gewünschten Tag-Klassen definieren und somit benutzerdefinierte Klassen erstellen und beliebige Tags oder Attribute implementieren.

Nur auf diesem gestartet, so dass, wenn jemand :)