Hier ist ein Beispiel:
Code: Alles auswählen
# uimodules.py
class Teaser(tornado.web.UIModule):
def css_files():
return ["teaser.js"]
def render(self, article):
return self.render_string("teaser_%s.html" % article.kind, article=article)
# index.html
{% for article in featured_articles %}
{{ modules.Teaser(article) }}
{% end %}
Mir gefällt die Idee. Für "echte" Komponenten wäre es jedoch nett, wenn man den Rumpf einer Komponente wieder im Template definieren könnte, etwa wenn man etwas haben will, das einen Rahmen oder eine Box generisch darstellen soll.
Djangos Inclusion Tags sind ähnlich, aber aufwendiger zu definieren und sie können nicht der Seite CSS oder JavaScript hinzufügen. Djangos Form Widgets können letzteres, sind aber nicht mit Templates gestaltbar.
Defnull, bitte sowas auch in Bottle einbauen :)
Stefan