J'ai récemment découvert le module genshi.builder. Cela me rappelle le module Stan de Divmod Nevow. Comment pourrait-on utiliser genshi.builder.tag pour construire un document HTML avec un doctype particulier? Ou est-ce même une bonne chose à faire? Si non, quelle est la droite façon?Comment utiliser genshi.builder pour créer par programme un document HTML?
Répondre
Il est impossible de construire une page entière en utilisant seulement genshi.builder.tag
- vous devez effectuer une chirurgie sur le flux résultant pour insérer le doctype. En outre, le code résultant aurait l'air horrible. La méthode recommandée pour utiliser Genshi consiste à utiliser un fichier modèle séparé, à en générer un flux, puis à restituer ce flux au type de sortie souhaité.
genshi.builder.tag
est surtout utile lorsque vous avez besoin de générer un balisage simple depuis Python, par exemple lorsque vous construisez un formulaire ou que vous effectuez une sorte de modification logique de la sortie.
documentation Voir pour:
Si vous voulez vraiment générer un document en utilisant uniquement builder.tag
, ce code (complètement non testé) pourrait être un bon point de départ:
from itertools import chain
from genshi.core import DOCTYPE, Stream
from genshi.output import DocType
from genshi.builder import tag as t
# Build the page using `genshi.builder.tag`
page = t.html (t.head (t.title ("Hello world!")), t.body (t.div ("Body text")))
# Convert the page element into a stream
stream = page.generate()
# Chain the page stream with a stream containing only an HTML4 doctype declaration
stream = Stream (chain ([(DOCTYPE, DocType.get ('html4'), None)], stream))
# Convert the stream to text using the "html" renderer (could also be xml, xhtml, text, etc)
text = stream.render ('html')
La page résultante n'aura aucun espace dedans - elle semblera normale, mais vous aurez du mal à lire le code source parce que ce sera entièrement sur une ligne. Implémenter des filtres appropriés pour ajouter des espaces est laissé comme un exercice au lecteur.
Genshi.builder est pour "générer par programmation des flux de balisage" [1]. Je crois que le but en est comme un backend pour la langue du modèle. Vous recherchez probablement le langage de création de gabarit pour générer une page entière.
Vous pouvez faire cependant les éléments suivants:
>>> import genshi.output
>>> genshi.output.DocType('html')
('html', '-//W3C//DTD HTML 4.01//EN', 'http://www.w3.org/TR/html4/strict.dtd')
Voir d'autres Doctypes ici: http://genshi.edgewall.org/wiki/ApiDocs/genshi.output#genshi.output:DocType
[1] genshi.builder.__doc__
Y a-t-il un moyen de créer un document html en utilisant Genshi? Je cherche quelque chose de similaire à stan. si ce n'est pas une utilisation appropriée de genshi, c'est bien, mais je voudrais savoir si c'est le cas. –
- 1. Impression d'un document par programme
- 2. créer un chemin dans wpf par programme
- 3. Comment mieux utiliser jQuery pour générer des éléments HTML programme
- 4. Créer TableLayout par programme
- 5. Créer une photomosaic par programme
- 6. Créer par programme un raccourci clavier pour le raccourci clavier
- 7. Ouverture d'un document d'archives IXOS par programme
- 8. Utiliser Acrobat standard pour combiner par programme un fichier PDF?
- 9. créer un document javascript Objet
- 10. Comment créer une fenêtre Cocoa par programme?
- 11. Comment déterminer par programme la racine du document en PHP?
- 12. Comment utiliser Netbeans Profiler par programme?
- 13. Insérer par programme un document Word dans un document existant (Word 2007)
- 14. Comment trouver et remplacer par programme dans ENTIER Word document
- 15. Comment utiliser par programme l'IrDA du téléphone portable pour contrôler à distance un lecteur multimédia?
- 16. Outils conviviaux pour décrire un élément sur un document html
- 17. Comment ajouter par programme un filtre générique pour IIS?
- 18. Comment vérifier par programme si des propriétés de document d'un document MS Word 2007 ont changé?
- 19. Génération de code HTML par programme
- 20. Comment utiliser JavaScript pour développer un formulaire HTML?
- 21. Comment générer par programme un PDF à partir de n'importe quel document sous OSX?
- 22. Comment créer un site pour mobile?
- 23. Comment supprimer OutputCache par programme pour ascx?
- 24. Comment puis-je créer un document Word en utilisant Python?
- 25. Comment créer un programme d'installation Mac pour mon application Java?
- 26. Comment récupérer une page Web html redirigée par programme?
- 27. Créer des enregistrements DNS par programme
- 28. Créer un élément dans un document xml
- 29. Comment sortir un document binaire basé sur un document HTML en utilisant des filtres en Java
- 30. Comment rendre un document HTML inscriptible dans le navigateur?
cela a du sens. ressemble à quelque chose que vous pourriez utiliser pour construire un fragment html à charger dans une page en utilisant ajax ou quelque chose? –
Même pour les petites pages AJAX, je préfère les modèles, car ils ont tendance à être simplement "si connecté, show name" logique et la substitution de paramètres. builder.tag est pour quand il y a quelque chose de vraiment complexe que je n'arrive pas à comprendre comment écrire correctement avec un template. –