一、render tornado通过render和renderString两个函数来渲染模板。 二、模板语法 1、模板文件 文件扩展名一般以html,也可以用其他的扩展名,只要文件内部符合语法规则。下面的内容假设为index.html文件中。 语法标签有: {# #}{{!, {%!, {#!{{, {%, or {# 2、变量
<div> {{name}} </div>
name = "你是谁?" self.render('index.html',name)
3、函数
{% apply *function* %} {% end %}
4、模板替换
<!-- base.html --> <title>{% block title %}Default title{% end %}</title> <!-- mypage.html --> {% extends "base.html" %} {% block title %}My page title{% end <!-- 这里block,替换base.html中的block块。
5、模板继承
{% extends *filename* %}
6、for循环/while语句
{% for name in name_list %} <div> {{name}} </div> {% end %} {% while True %} {% if name is "谁" %} {% continue %} {% print(name) %} {% end %}
7、插入模板文件
{% include *filename* %}
8、渲染UI模块
{% module Template("foo.html", arg=42) %}
9、定义变量
{% set *x* = *y* %}
10、异常处理
{% try %} {% except %} {% else %} {% finally %} {% end %}
三、举例
class MainHandler(tornado.web.RequestHandler): def get(self): items = ["item1","item2","item3"] # render the corresponding template file, and pass the "**args" to the assigned template # not only we can pass the realted parameters, but also can pass the related functions. # so extendible and powerful! :) items2 = ["item1", "item2"] def checked(item): return 'checked=checked' if item in items2 else '' self.render("index.html", items=items, add=add, items2=items2, checked=checked)
<html> <head> <title>template function test</title> </head> <body> <ul> {% for item in items %} <li>{{ escape(item) }}</li> <li> <input value={{item}} name={{item}} type="checkbox" {{checked(item)}} /> {{item}}</li> {% end %} {{ add(2,2) }} </ul> </body> </html>
查看更多关于Python学习第二十九课(tornado的模板引擎)的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did162279