tornado入门 - 模板

本文深入探讨了HTML模板引擎中继承与重写的原理与应用,包括如何利用{%extends%}

*继承与重写

{% extends "base.html" %}
<!--继承base.html-->
{% block body %}
<!--重写base.html中的block body-->
{% if error %}
    <span style="...">Error:{{ error}} </span><p></p>
{% end %}

<form action="/auth/login" method="post">
    email:<input name = 'email' type="text"><br>
    <p></p>
    password:<input name = 'password' type="password"><br>
    <p></p>
    {% module xsrf_form_html() %}
    <!--防止csrf-->
    <input type="submit">

</form>
{% end %}  this text is not shown

*其他用法

**{%apply *function* %}...{% end %}

以function处理apply 与end 之间的内容

{% apply linkify %} http://www.baidu.com{% end %}
自带linkify 将在页面显示链接

自定义方法

在handler里定义函数, 添加到self.ui字典

class HomeHandler(tornado.web.RequestHandler):
    def test_string(self, msg):
        msg = msg.decode('utf-8')
        return '<a href=%s>%s</a>' % (msg,msg)

    def get(self, *args, **kwargs):
        self.ui['test_function'] = self.test_string
        self.render('login.html', error ='错误')

使用自定义函数

{% apply test_function %}http://www.bing.com{% end %}

**tornado默认转义所有字符, 默认autoescape,

可以用{% raw ...%} 知名局部不转义内容

也可以使用{% autoescape None%}使本文件内容默认不转义

配合escape达到局部转义


** {% for *var* in *expr*%} ... {% end %}

for循环, 也可以使用 {% break %} {% continue %}


** {% if  *condition* %} ... {%elif  *condition* %} ...{%else%}..{%end%}


** {% include *filename* %}

html元素累加,和base不同 base必须放第一行

** {% set x = ...%} 配合{{x}}使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值