tornado模板:
渲染:
index.py:
# 渲染
class HomeHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
num1 = 100
dict1 = {
"name": "shao"
}
self.render('home.html', num=num1, dict=dict1)
home.py:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>主页</title>
#这是两种加载css文件方式
<!--<link rel="stylesheet" href="static/home.css">-->
<link rel="stylesheet" href="{{static_url('home.css')}}">
</head>
<body>
<h1>这里是home页面</h1>
<h2>{{num}}</h2>
#tornado可以在{{ }}写表达式
<h2>{{num+10}}</h2>
#不适用.语法,而是用中括号
<h3>{{dict["name"]}}</h3>
</body>
</html>
函数:
index.py:
class FuncHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
def mysum(n1, n2):
return n1 + n2
self.render("func.html", mysum=mysum)
func.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Func</title>
</head>
<body>
#可以在{{ }}里面调用后端传过来的函数
<h1>{{mysum(100,89)}}</h1>
</body>
</html>
转义:
index.py:
# tornado开启了自动转义
class TransHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
str1 = "<h1>转义</h1>"
self.render("trans.html", str2=str1)
trans.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>转义</title>
</head>
<body>
<!--#自动转义-->
{{str2}}
<!--关闭自动转义1-->
{% raw str2%}
<!--关闭自动转义2,关闭当前文档的自动转义-->
{{str2}}
{% autoescape None %}
{{str2}}
<!--还可以在配置文件中改:"autoescape":None-->
<!--在关闭自动转义后,在特定的地方开启转义:{{escape(str2)}}-->
{{escape(str2)}}
</body>
</html>
加载静态资源:
在application.py里加,要加载最后面
(r"/(.*)$", tornado.web.StaticFileHandler, {"path": os.path.join(config.BASE_DIRS, "static")})
总结:
tornado的模板语法和Django和相似:
if、for、while语句都是一样的,只是结束都是end没有endif之类的。
继承也是一样的都用的extends