第二百六十节,Tornado框架-内置模板方法
Tornado框架-内置模板方法
直接在html文件使用,不需要传值
Tornado默认提供的这些功能其实本质上就是 UIMethod 和 UIModule,也就是Tornado框架定义好的html文件可调用函数及字段,直接在html文件调用即可
在模板中默认提供了一些函数、字段、类以供模板使用:
转义功能
escape: tornado.escape.xhtml_escape 的別名
xhtml_escape: tornado.escape.xhtml_escape 的別名
url_escape: tornado.escape.url_escape 的別名
json处理
json_encode: tornado.escape.json_encode 的別名
squeeze: tornado.escape.squeeze 的別名
生成a标签
linkify: tornado.escape.linkify 的別名
就是python的datetime模块
datetime: Python 的 datetime 模组
handler: 当前的 RequestHandler 对象
注意一下handler代指的RequestHandler逻辑处理对象也就是self
封装的request信息,包含用户访问的请求信息
request: handler.request 的別名
框架引擎不用传参,html直接调用即可
#!/usr/bin/env python #coding:utf-8 import tornado.ioloop import tornado.web #导入tornado模块下的web文件 import uimodule #逻辑处理 class MainHandler(tornado.web.RequestHandler): #定义一个类,继承tornado.web下的RequestHandler类 def get(self): #get()方法,接收get方式请求 self.render("cshi.html") #显示cshi.html文件,传值到模板语言里渲染 settings = { #html文件归类配置,设置一个字典 "template_path":"template", #键为template_path固定的,值为要存放HTML的文件夹名称 "static_path":"static", #键为static_path固定的,值为要存放js和css的文件夹名称 'ui_modules':uimodule, #配置html文件函数调用模块 } #路由映射 application = tornado.web.Application([ #创建一个变量等于tornado.web下的Application方法 (r"/index", MainHandler), #判断用户请求路径后缀是否匹配字符串index,如果匹配执行MainHandler方法 ],**settings) #将html文件归类配置字典,写在路由映射的第二个参数里 if __name__ == "__main__": #内部socket运行起来 application.listen(8888) #设置端口 tornado.ioloop.IOLoop.instance().start()
html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--注意js和css文件路径配置后必须在引入路径里加上配置文件夹名称--> <link rel="stylesheet" href="static/s1.css"> </head> <body> <p>{{request}}</p> <h1></h1> </body> </html>
current_user: handler.current_user 的別名
locale: handler.locale 的別名
_: handler.locale.translate 的別名
这个最常用【重要】,在html页面调用可以自动识别逻辑处理配置的静态文件路径如css和js,并且将静态文件缓存到用户本地,连接地址将转换成静态文件的md5值
static_url: for handler.static_url 的別名
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href='{{static_url("s1.css")}}'> </head> <body> <h1>测试</h1> </body> </html>
可以防止跨站伪造,后面会讲到
xsrf_form_html: handler.xsrf_form_html 的別名
模板方法了解一下即可,大多数还是我们使用自己的自定义UIMethod 或 UIModule