Handler in Tornado Template

在rails中使用erb的时候发现, erb无需传递任何参数, self已经被作为参数传出. 难怪玩rails的朋友都高呼rails贴心.

Tornado很棒的技巧, 本人最近才发现.

以前我们这样做:

def get(self):
    self.render("template/file.html", user = self.current_user, posts = [
            {"title": "post 1", "content": "first post"},
            {"title": "post 2", "content": "second post"},
        ])

我写的稍稍夸张了一点, 但是我们发现通过 handler 可以指向 controller self, 那么 render 方法就更加优雅了:

def get(self):
    self.user = self.current_user
    self.posts = [
            {"title": "post 1", "content": "first post"},
            {"title": "post 2", "content": "second post"},
        ]

    self.render("template/file.html")

在template中:

{% raw %}
{{ handler.user }}
{{ handler.posts }}
{% endraw %}

类的成员变量可以直接访问.

为什么最近才发现呢? 这事要怪Tornado的文档 template.html 通篇阅读下来对于默认的 alias 只字不提

但是在 overview 页面 overview.html#templates 上却有详细的描述. 对于直接读手册的同学来说, 应该算路过了!

blogroll

social