1模板的基本了解
ornado自身提供了一个轻量级、快速并且灵活的模板语言在tornado.template模块中。
模板就是格式固定的网页:格式是固定的,内容是变化的模板是一个允许嵌入Python代码片段的HTML文件
**1、在Application的参数中添加template_path 配置,指定模板的路径和静态文件的路径**
template_path='templates', static_path='static',
**2、把html文件放入'templates'文件夹下 把静态文件放入'static'文件夹下**
**3、使用render方法渲染模板**
class IndexHandler(tornado.web.RequestHandler): def get(self): self.render('tmep_index.html')
这段代码告诉Tornado在templates文件夹下找到一个名为tmeplate_index.html 的文件,读取其中的内容,并且发送给浏览器
#### 模板中的符号
```python
{{ }} 表达式用双大括号包围,内容可以是任何python表达式 ,在双大括号中的单词是占位符
{% %} 模板控制语句以{% %}包围
```
双大括号中放置变量名或表达式,变量名与传入的关键字参数名要相同
01index.html文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test</title> </head> <body> hello budong <form method="post" action="/index"> <p>用户名<br><input type="text" name="name"></p> <p>密码<br><input type="text" name="password"></p> <input type="submit"> </form> </body> </html>
02temp_index.html文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 欢迎用户 {{ username }}登录 </body> </html>
处理器文件
class IndexHandler(tornado.web.RequestHandler): def get(self): self.render('01index.html') def post(self): username = self.get_argument('name','no') passwd = self.get_argument('password','no') self.render('02tmep_index.html',username=username)
tornado的模板处理已经十分方便,在{{}}中可以传入任意的python表达式:
(r'/temp',TempHandler), class TempHandler(tornado.web.RequestHandler): def get(self): username = self.get_argument('name','no') self.render('02tmep_index.html',username=username)
接下来我们再来学习一下模板:
```python
#传入一个表达式
{{ 1+2 }}
<br>
{{ time.time() }} # 可以执行函数
<br>
{{ haha() }} # 自定义的函数也可以传入
```
#控制语句
控制语句的大部分就像对应的Python语句一样工作
控制语句的返回以最近的{% end %} 结束
**if条件判断**
{% if condition %} ... {% elif condition %} ... {% else %} ... {% end %}
例子:
{% if username!='no' %} 欢迎用户 {{ username }} 登录 {% else %} 您还没有登录 {% end %}
**for循环**
{% for var in expr %} ... {% end %}
在处理器中的写法
class TempHandler(tornado.web.RequestHandler):
def test(self):
return 'this is tornado'
def get(self, *args, **kwargs):
username = self.get_argument('name','no')
li = ['a','b','c','d']
self.render('02temp_index.html',
username=username,
haha=self.haha,
li=li
)
在html文件中的写法
<br> {% for i in li%} {{ i }} <br> {% end %}