Обычно это достигается с помощью модулей пользовательского интерфейса .
Так я бы структурировал ваше приложение.
Первый main.py
:
import tornado.ioloop
import tornado.web
import views
class MainHandler(tornado.web.RequestHandler):
def get(self):
HL = {
'headlines': ['head1', 'head2', 'head3'],
}
self.render('tmpl.html', HL=HL)
if __name__ == "__main__":
application = tornado.web.Application([
(r"/", MainHandler),
], ui_modules=views)
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Тогда ваш шаблон tmpl.html
:
<html>
{% for headline in HL['headlines'] %}
{% module Headline(headline) %}
{% end %}
</ul>
</body>
</html>
Наконец, views.py
, где вы можете определить все свои модули пользовательского интерфейса:
from tornado.web import UIModule
class Headline(UIModule):
def render(self, name):
return '<h1>%s</h1>' % name
UI modules
подобны «шаблонам многократного использования», которые принимают параметры.