在config.py的settings中配置templates_path:
import os
BASE_DIR=os.path.dirname(__file__)
# 参数
options={
"port":6578
}
# 配置
settings={
"debug":False,
"static_path":os.path.join(BASE_DIR,"static"),
"template_path":os.path.join(BASE_DIR,"templates")
}
渲染就是向客户端显示一个html页面:
self.render("xxx.html")
增加一个渲染的页面路由render:
from views.index import IndexHandler,HomeHandler,RenderHandler
import tornado.web
import config
class Application(tornado.web.Application):
def __init__(self):
handlers=[
(r'/',IndexHandler),
(r'/home',HomeHandler),
(r'/render',RenderHandler)
]
super(Application,self).__init__(handlers,**config.settings)
编写一下render的页面代码RenderHandler:
class RenderHandler(RequestHandler):
def get(self, *args, **kwargs):
tmp=100
per={
"name":"user",
"height":175
}
self.render("render.html",num=tmp,per=per)
这里我们定义了一个变量tmp,设它的值为100
然后定义了一个字典,包含一个人的名字和身高
将这两个变量传到render.html的页面中,其中render.html的页面代码为:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>render filetitle>
head>
<body>
这是一个渲染页面<br>
这里有一个页面传递过来的变量值:num={{num}}<br>
num的值再加10的话就是:{{num+10}}<br>
这个人的名字是:{{per["name"]}}
body>
html>
在浏览器中输入: http://localhost:6578/render 显示为:
主要涉及到if for while语句的使用,首先添加一下流程控制的页面处理类:
class FlowControlHandler(RequestHandler):
def get(self, *args, **kwargs):
flag=1
persons=[
{"name":"A","hobby":"hobby1"},
{"name":"B","hobby":"hobby2"}
]
self.render("render.html",flag=flag,persons=persons)
将参数flag和persons传入到render.html页面中,render.html的代码为:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>render filetitle>
head>
<body>
if控制语句:
{%if flag==1%}
sentence1
{%end%}
<br>
control控制语句:
<ul>
{%for per in persons%}
<li>{{per['name']}}li>
{%end%}
ul>
<br>
body>
html>
在浏览器中输入:http://localhost:6578/render 运行的结果为:
static_url:用于加载css和js文件
自定义函数
“autoescape”:None 关闭当前项目的自动转义
escape()函数:在关闭当前项目的自动转义时,对特定变量进行转义
static_path:
静态文件目录
StaticFileHandler:
提供静态资源