tornado template 使用

tornado template 使用

官网参考

1. 配置template模块目录

在settings 中写入

?
1
'template_path' :os.path.join(os.path.dirname(__file__), "templates" )

2. 创建一个index.html到 templates目录下

?
1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
     <html>
     <head>
         <title></title>
     </head>
     <body>
         ......这里使用` 4 . index.html`中的代码
     </body>
     </html>

3. 在get/post等其中一个方法中添加如下

?
1
2
3
4
5
6
ls=[ 'af ' , 'aaa ' , 'cccc ' ]
     num= 1
     var_dict = { 'key1' : 'value1' , 'key2' : 'value2' }
     def add(a,b):
         return a+b
     self.render( 'index.html' , ls=ls, num=num, var_dict = var_dict, add=add)

4. index.html

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<div>
        直接显示: {{ls}}<br/>
        传递数组显示: <br/>
        {% for a in ls %}
            {{escape(a)}} <br/>
        {% end %}
 
    </div>
 
    <hr>
    直接显示:{{var_dict}}<br/>
    <div>
        传递dict 显示: <br/>
        {% for key, value in  var_dict.items() %}
            {{key}}, {{value}} <br/>
        {% end %}
    </div>
 
    <hr>
 
    <div>
        传递单个值显示:
        {{num}}
    </div>
 
    <hr>
     <div>
         传递方法添加:<br/>
         {{add( 1 , 2 )}}
     </div>

5. 总结一部分

以上是简单的template使用;归纳一下template里面的语法有:

  1. 内置表达式:{{表达式在这里}}

  2. 控制状态流:

    ?
    1
    2
    3
    {% if 或者 for %}
         ... 这里是各种表达式
    {%end%}
  3. 在Template中使用方法, 默认所有template内置的方法有: escape(), url_escape(), json_encode(), squeeze()

    ?
    1
    2
    3
    4
    from tornado.template import Template
    def add(a, b):
         return a+b
    Template( "count is {{add(1,2)}}" ).generate(add=add)

6. 扩展Template

继承{% extends "filename.html" %}
  1. 创建一个sub.html, 清空里面的内容只输入一句话

    ?
    1
    {% extends "index.html" %}
  2. 修改 
    self.render('index.html', ls=ls, num=num, var_dict = var_dict)成 
    self.render('sub.html', ls=ls, num=num, var_dict = var_dict) 
    运行一下,发现还是可以用的,说明sub.html完全继承了index.html;这样就实现了代码重用部分了

Blocks

语法:

?
1
2
{% block header %}{% end %}# 定义一个
     {% block header %}赋值在中间{% end %}# 中间赋值

其实主要作用是用来替换基模板中的一些代码块

  1. 新建一个base.html

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <html> <body>
    <header>
         {% block header %}{% end %}
    </header> <content>
         {% block body %}{% end %} </content>
    <footer>
         {% block footer %}{% end %}
    </footer> </body>
    </html>
  2. 写一个main.html

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {% extends "base.html" %}
    {% block header %}
         <h1>这里是头部赋值</h1>
    {% end %}
     
    {% block body %}
         <p>这里是body 赋值</p>
    {% end %}
     
     
    {% block footer %}
         <p>这里是footer赋值</p>
    {% end %}

就好比在base.html中定义了一堆变量,然后在main.html中赋值一样

UIModel

  1. 继承tornado.web.UIModul

    ?
    1
    2
    3
    class HelloModule(tornado.web.UIModule):
         def render(self):
             return '<h1>Hello, world!</h1>'
  2. 设置Application中

    ?
    1
    ui_modules={ 'Hello' , HelloModule}

    定义一个名为Hello的modle对象

  3. 在 hello.html中使用

    ?
    1
    2
    3
    <body>
         {% module Hello() %}
    </body>

这个就简单介绍了;

其他

  1. 设置变量

    ?
    1
    2
    3
    {%set var= 'xxxx' %}
    # 使用
    {{var}}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值