2009-10-10 16 views
17

Cerco un generatore HTML facilmente implementato per python. Ho trovato questopitone generatore html

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

ma non c'è modo di aggiungere elementi css (id, classe) per tabella.

thx

risposta

7

Se volete generazione programmatica piuttosto che di template, il modulo di Karrigell HTMLTags è una possibilità; può includere per es. l'attributo class (che sarebbe una parola riservata in Python) per il trucco del maiuscolo la sua iniziale, vale a dire, citando l'URL del documento ho appena dato:

attributi con lo stesso nome come parole chiave Python (di classe, tipo) devono essere capitalizzati :

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

HTML Generazione di solito è fatto con una delle infinite quantità di linguaggi di template HTML disponibili per Python. Personalmente mi piace Templess, ma il Genshi è probabilmente il più popolare. Ne esistono infinite quantità, c'è un list che è altamente probabile che sia incompleto.

Altrimenti si potrebbe voler utilizzare lxml, dove è possibile generarlo in modo più programmatico in XML. Anche se ho difficoltà a vedere il beneficio.

+0

Per inciso: Genshi è il motore di template usato da Trac. – retracile

5

C'è il venerabile HTMLGen da Robin Friedrich, che è difficile da trovare, ma ancora disponibile here (datato 2001, ma HTML non è cambiato molto da allora ;-). C'è anche xist. Ovviamente al giorno d'oggi la generazione di HTML, come sottolinea Lennart, è generalmente meglio eseguita utilizzando i sistemi di template come Jinja o Mako.

+0

Al giorno d'oggi? I templati di Python sono in circolazione almeno dal DTML, 1997. :) ZPT, che è migliore dal 2001. :) [Solo nitpicking] –

2

In realtà è possibile aggiungere qualsiasi attributo come id e la classe di oggetti in HTML.py (http://www.decalage.info/python/html).

attribs è un parametro facoltativo di classi Table, TableRow e TableCell. È un dizionario di attributi aggiuntivi che vorresti impostare. Ad esempio, il codice seguente imposta id e class per una tabella:

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 

Lo stesso parametro può essere utilizzato con TableRow e TableCell oggetti per righe e celle formato. Non esiste ancora per le colonne, ma dovrebbe essere facile da implementare se necessario.

0

potreste essere interessati in alcune delle implementazioni Python Haml. HAML è come una stenografia HTML e richiede solo pochi minuti per apprendere. C'è anche una versione CSS chiamata SASS.

http://haml.hamptoncatlin.com/

"Is there a HAML implementation for use with Python and Django" parla di Python e HAML un po 'di più.

sto usando HAML il più possibile quando sono in programmazione Ruby.E, come una nota, ci sono stati anche alcuni moduli di lavoro ottenendo per Perl che lavorano con il bel MVC Mojolicious:

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

4

Questo è uno ultra-semplice generatore HTML che ho scritto. Lo uso build-time per generare html. Se uno sta generando al tempo di esecuzione di pagine html poi ci sono opzioni migliori disponibili

Ecco il link

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

E un esempio veloce

>> 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 è una libreria generazione HTML che ti consente di creare facilmente tag. In dominare, pitone parole riservate sono preceduti da un carattere di sottolineatura, quindi sarebbe simile a questa:

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


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

Disclaimer: io sono l'autore di dominare

3

Ok, ecco un altro generatore di html, o io preferisco pensare di esso come un compilatore.

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

Questo è un insieme di classi di base che possono essere utilizzati per definire tag e attributi. Quindi una classe tag ha attributi e figli. I bambini sono essi stessi classi di tag che hanno attributi e figli ecc. Ecc. Inoltre è possibile impostare parametri che iniziano con la classe radice e lavorano sui vari rami.

Ciò consentirà di definire tutte le classi di tag che si desidera, in modo da poter creare classi personalizzate e implementare eventuali tag o attributi che si desidera.

appena iniziato su questo, quindi se qualcuno vuole mettere alla prova :)