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 %}