1

Tornado模板

1.模板的基本了解

准备工作

Tornado自身提供了一个轻量级、快速并且灵活的模板语言在tornado.template模块中。

模板就是格式固定的网页:格式是固定的,内容是变化的模板是一个允许嵌入Python代码片段的HTML文件

在tornado文件夹下新建一个lesson4文件夹 在该文件夹下新建一个start1.py文件 先添加一些基本内容
然后按下列步骤操作
1、在Application的参数中添加template_path 配置,指定模板的路径和静态文件的路径

template_path='templates',
static_path='static',

2、在lesson4文件夹下新建template文件夹(用来存放html文件)
在lesson4文件夹下新建static文件夹(用来存放图片,css,js等静态文件)

3、使用render方法渲染模板 添加以下代码

(r'/',IndexHandler),  # 添加路由

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('index.html')

这段代码告诉Tornado在templates文件夹下找到一个名为index.html 的文件,读取其中的内容,并且发送给浏览器

4、在templates文件夹下新建一个index.html文件
在body中添加下列代码

hello boys and girls!

运行后显示的结果


图片描述

2.模板中的符号

{{   }}   表达式用双大括号包围,内容可以是任何python表达式 ,在双大括号中的单词是占位符
{%   %}   模板控制语句以{%  %}包围
{# #} 模版注释格式

双大括号中放置变量名或表达式,变量名与传入的关键字参数名要相同
在templates中新建IndexHandler.html
并在这个文件的body中添加以下代码

<form method="post" action="/html">
    <p>用户名<br><input type="text" name="name"></p>
    <p>密码<br><input type="text" name="password"></p>
    <input type="submit">
</form>

在templates中新建index2.html文件
并在body中加入以下代码

<b>欢迎用户 {{ username }}登录</b>

处理器文件

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('index1.html')

    def post(self):
        username = self.get_argument('name','no')
        self.render('index2.html',username=username)


图片描述

图片描述

tornado的模板处理已经十分方便,在{{}}中可以传入任意的python表达式:

#为了测试方便,新建一个简单的路由
(r'/temp',TempHandler),
class TempHandler(tornado.web.RequestHandler):
    def get(self):
        username = self.get_argument('name','no')
        self.render('temp.html',username=username)

接下来我们在index.html文件中添加以下代码

 hello boys and girls!<br>
<!--传入一个表达式-->
{{ 10+27 }}
<br>
{{ time.time() }} <!--可以执行函数-->
<br>
{{ haha() }} <!--自定义的函数也可以传入-->  

在start1.py中的TempHandler中添加以下代码

    def haha(self):
        return '这里是tornado'

    def get(self):
        username = self.get_argument('name','no')
        import time
        li = ['a','b','c','d']
        self.render('index.html',
                    username=username,
                    time=time,
                    haha=self.haha,
                    li=li
                    )


图片描述

3.控制语句

控制语句的大部分就像对应的Python语句一样工作

控制语句的返回以最近的{% end %} 结束

if条件判断

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

例子:

{% if username!='no' %}
    欢迎用户 {{ username }} 登录
{% else %}
    您还没有登录
{% end %}


for循环

{% for var in expr %}  # 注意在模版中的控制语句都不需要加冒号
     ...
{% end %}

在html文件中的写法

<br>
{% for i in li%}
    {{ i }} <br>
{% end %}


以上就是模板的基本知识,我们在后面还会深入学习。


lethe
44 声望7 粉丝