Tornado框架-模板语言的三种方式

模板语言就是可以在html页面,接收逻辑处理的self.render()方法传输的变量,将数据渲染到对应的地方

一、接收值渲染

{{...}}接收self.render()方法传值的变量或一个值

#!/usr/bin/env python
#coding:utf-8 import tornado.ioloop
import tornado.web #导入tornado模块下的web文件 #逻辑处理
class MainHandler(tornado.web.RequestHandler): #定义一个类,继承tornado.web下的RequestHandler类
def get(self): #get()方法,接收get方式请求
self.render("cshi.html",zhi = "网站名称") #显示cshi.html文件,将zhi变量传到模板语言里渲染 settings = { #html文件归类配置,设置一个字典
"template_path":"template", #键为template_path固定的,值为要存放HTML的文件夹名称
"static_path":"static", #键为static_path固定的,值为要存放js和css的文件夹名称
} #路由映射
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>
<!--{{zhi}}接收self.render()方法传值的变量或一个值-->
<h1>{{zhi}}</h1>
</body>
</html>

二、接收值,运行代码块

{%...%}{%end%}在html渲染代码块,支持html里代码块书写,并能接收self.render()方法传值

#!/usr/bin/env python
#coding:utf-8 import tornado.ioloop
import tornado.web #导入tornado模块下的web文件 #逻辑处理
class MainHandler(tornado.web.RequestHandler): #定义一个类,继承tornado.web下的RequestHandler类
def get(self): #get()方法,接收get方式请求
self.render("cshi.html",zhi = ["首页","资讯","关于"]) #显示cshi.html文件,将列表传到模板语言里渲染 settings = { #html文件归类配置,设置一个字典
"template_path":"template", #键为template_path固定的,值为要存放HTML的文件夹名称
"static_path":"static", #键为static_path固定的,值为要存放js和css的文件夹名称
} #路由映射
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>
<ul>
{% for i in zhi %}
<li>{{i}}</li>
{% end %}
</ul>
</body>
</html>

模板语言,for循环列表加if判断

#!/usr/bin/env python
#coding:utf-8 import tornado.ioloop
import tornado.web #导入tornado模块下的web文件 #逻辑处理
class MainHandler(tornado.web.RequestHandler): #定义一个类,继承tornado.web下的RequestHandler类
def get(self): #get()方法,接收get方式请求
self.render("cshi.html",zhi = ["首页","资讯","关于"]) #显示cshi.html文件,将列表传到模板语言里渲染 settings = { #html文件归类配置,设置一个字典
"template_path":"template", #键为template_path固定的,值为要存放HTML的文件夹名称
"static_path":"static", #键为static_path固定的,值为要存放js和css的文件夹名称
} #路由映射
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>
<ul>
<!--循环列表,加判断-->
{% for i in zhi %}
{% if i == "首页" %}
<li style="color: #ee1215">{{i}}</li>
{% else %}
<li>{{i}}</li>
{% end %}
{% end %}
</ul>
</body>
</html>

三、自定义,可以在html里执行函数

有两种方式,一种叫uimethod,一种叫uimodule

uimethod方式

  1、首先新建一个py文件来写html可以调用的函数

  2、在模板引擎导入新建的py文件,在逻辑处理配置字典里配置键为ui_methods(固定的):值为新建的py文件路径名称

  3、在html{{func()}}执行py文件里的函数

模板引擎

#!/usr/bin/env python
#coding:utf-8 import tornado.ioloop
import tornado.web #导入tornado模块下的web文件
import uimethod #逻辑处理
class MainHandler(tornado.web.RequestHandler): #定义一个类,继承tornado.web下的RequestHandler类
def get(self): #get()方法,接收get方式请求
self.render("cshi.html",zhi = ["首页","资讯","关于"]) #显示cshi.html文件,将列表传到模板语言里渲染 settings = { #html文件归类配置,设置一个字典
"template_path":"template", #键为template_path固定的,值为要存放HTML的文件夹名称
"static_path":"static", #键为static_path固定的,值为要存放js和css的文件夹名称
'ui_methods': uimethod, #配置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()

uimethod.py文件,html函数调用文件

#!/usr/bin/env python
#coding:utf-8 def func(self):
return ""

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>
<h1>{{func()}}</h1>
<ul>
</ul>
</body>
</html>

uimodule方式

  1、新建一个py文件来写html文件调用函数,这个py文件必须导入tornado.web下的UIModule方法,在py文件创建类必须继承UIModule方法,在这个类里写html执行函数

  2、模板引擎导入新建的py文件,在模板引擎配置字典配置访问,ui_modules固定的:uimodule新建py文件路径名称,

  3、在html调用py文件里的函数{% module fghj() %},注意调用方式{% module固定的  fghj()要执行的函数 %}

 模板引擎

#!/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",zhi = ["首页","资讯","关于"]) #显示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()

uimodule.py文件,html函数调用文件

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from tornado.web import UIModule
from tornado import escape class custom(UIModule): def render(self, *args, **kwargs):
return "" class fghj(UIModule): def render(self, *args, **kwargs):
return [1,2,3,4,5]

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>
<h1>{% module custom() %}</h1>
<h1>{% module fghj() %}</h1>
<ul>
</ul>
</body>
</html>

第二百五十九节,Tornado框架-模板语言的三种方式的更多相关文章

  1. 第二百五十八节,Tornado框架-逻辑处理get()方法和post()方法,初识模板语言

    Tornado框架-逻辑处理get()方法和post()方法,初识模板语言 Tornado框架,逻辑处理里的get()方法,和post()方法 get()方法,处理get方式的请求post()方法,处 ...

  2. 四十:数据库之SQLAlchemy实现排序的三种方式

    SQLAlchemy实现排序有三种方式一:order_by:查询的时候使用此方式根据某个字段或模型下的属性进行排序二:模型定义的时候,指定排序方式三:一对多的时候,relationship的order ...

  3. 第三百一十九节,Django框架,文件上传

    第三百一十九节,Django框架,文件上传 1.自定义上传[推荐] 请求对象.FILES.get()获取上传文件的对象上传对象.name获取上传文件名称上传对象.chunks()获取上传数据包,字节码 ...

  4. 第二百六十一节,Tornado框架模板引擎本质

    Tornado框架模板引擎本质 只需要了解一下即可 本篇就来详细的剖析模板处理的整个过程. 上图是返回给用户一个html文件的整个流程,较之前的Demo多了绿色流线的步骤,其实就是把[self.wri ...

  5. 第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装

    第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装 xadmin介绍 xadmin是基于Django的admin开发的更完善的后台管理系统,页面基于Bootstr ...

  6. 第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页

    第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页 根据用户的筛选条件来结合分页 实现原理就是,当用户点击一个筛选条件时,通过get请求方式传参将筛选的id或者值, ...

  7. 第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能

    第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能 Django实现搜索功能 1.在Django配置搜索结果页的路由映 ...

  8. 第三百五十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)介绍以及安装

    第三百五十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)介绍以及安装 elasticsearch(搜索引擎)介绍 ElasticSearch是一个基于 ...

  9. 第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用、自动限速、自定义spider的settings,对抗反爬机制

    第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用.自动限速.自定义spider的settings,对抗反爬机制 cookie禁用 就是在Scrapy的配置文件set ...

随机推荐

  1. octopress github 换电脑 使用

    octopress github 换电脑 使用

  2. 查找文件工具find

    与locate.whereis命令相比,find具有本质的区别: 首先,find是从指定的位置进行遍历查找(可以理解为对文件和目录进行逐一查找). 其次,find可以查找具有某一类特征的文件(例如查找 ...

  3. Python——Shell编程关于Sha-Bang(#!)

    Q. #!的名字为什么叫Sha-Bang? A. Sha-Bang是Sharp和Bang的组合词.Sharp for #, Bang for ! 类似的情况是,C#通常被称为C Sharp Q. Sh ...

  4. Jquery重新学习之四[核心属性与文档处理属性]

    1:核心.each(callback),size(),length(),get([index]) 1.1 .each(callback)通过它可以遍历对象.数组的属性值并进行处理 <form i ...

  5. sae python中Mysql中文乱码的解决

    一開始我用的是: db=MySQLdb.connect(db=sae.const.MYSQL_DB,user=sae.const.MYSQL_USER,passwd=sae.const.MYSQL_P ...

  6. STRUTS2配置动态页面

      STRUTS2配置动态页面 CreateTime--2017年5月11日09:00:31Author:Marydon 1.struts配置 <?xml version="1.0&q ...

  7. 〖Linux〗ltib的使用帮助

    scue@Link:/home/work/ltib$ ./ltib --help This script is used to manage the building of BSPs with com ...

  8. Web.config中设置启用webservice远程调试訪问

    在.NET 中已经默认将webservice的远程调试功能关闭.有的时候我们须要远程调试程序的时候,就须要打开此功能我们仅仅需在webservice的项目的中添web.config的<syste ...

  9. 数据库选型之MySQL(固态硬盘)

    刘勇    Email: lyssym@sina.com 本博客记录作者在工作与研究中所经历的点滴,一方面给自己的工作与生活留下印记,另一方面若是能对大家有所帮助,则幸甚至哉矣! 简介 鉴于高频中心库 ...

  10. ML 与 DM 工具 Weka 的使用

    1.关于Weka Weka 的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的.非商业化(与之对应的是SPSS公司商业数据 ...