tornado框架基础05-模板继承UImodul和UImethods
Posted winfun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tornado框架基础05-模板继承UImodul和UImethods相关的知识,希望对你有一定的参考价值。
父模板?
<html lang="en">
<link rel="shortcut icon" href=" static_url(‘images/favicon.ico‘)"> </head>
<body>
% block body %
this is tornado
% end %
</body>
</html>
子模板
% extends ./03base.html %
% block title %Extend% end %
% block body %
% if username!=‘no‘ %
欢迎用户 username 登录
% else %
您还没有登录
% end %
% end %
extend
% extend filename %继承模板,在子模板中会把父模板的所有内容都继承到子模板中,减少大量重复代码
block
% block name %...% end %
被词语句包裹的代码块在子模板中可以被重写,覆盖父模板中的
模板导入
模板文件
this is tornado templates include 子模板
% include ./05include.html %
include
% include filename%
include 可以导入一些其他的模板文件,一般使用 include 的时候,模板文件中不使用 block 块
继承
extend 可以继承父模板,从而节省了大量重复代码,同时也为修改带来了极大的方便,但是需要注意的是一定只能单继承,一个模板只能继承一个模板
块
block 包裹一部分代码块,可以在子模板中重写块中的内容
导入模板文件
include 可以导入模板文件,但是导入的模板中不要再出现 extend 和 block
02 函数和类导入
渲染时导入
在 Handler 中渲染模板时传入
将函数写在handler里面.
示例
def haha(self):
return ‘this is hahaha‘
class Calculation:
def sum(self, a, b):
return a+b
传入
self.render(‘04extend.html‘,
haha=self.haha,
cal=Calculation
)
haha()
Calculation().sum(5.5.)
模板中直接导入
在模板中也可以直接导入 python 模块
导入内置模块
% import time %
time.ctime()
导入自定义模块
% from mod_file import add, upper, Calculation % add(5, 6)
注意路径问题:python解释器查找 mod_file 时是根据 py 文件的路径来查找的,不是根据模板的路径来查找
03 ui_methods ui_modules
第一步
新建文件ui_methods.py
新建文件ui_methods.py ,这里的文件名是随意的只要在import时合法即可,这里可以新建一个文件夹,如util,来放置 ui_methods.py 和 ui_modules.py
def methods1(self): #注意这里要加上self
return ‘ui_methods 1‘
def methods2(self):
return ‘ui_methods 2‘
新建文件ui_modules.py
新建文件ui_modules.py,使用ui_modules需要继承UIModule类
from tornado.web import UIModule
class UiModule(UIModule):
def render(self, *args, **kwargs):
return ‘我是 ui_module‘
第二步
在项目主文件中导入
import util.ui_modules
import util.ui_methods
导入类要加module:
module TestModule
导入方法加methods:
methods func()
第三步
配置 Application 参数
ui_methods=util.ui_methods,
ui_modules=util.ui_modules,
也可以写成字典形式:
ui_modules=
‘UiModule‘:util.ui_modules.UiModule,
第四步
在模板中调用
% module UiModule() %
methods1()
刚才的这种方式,虽然烦琐了一点,但是在调用的时候十分简单,在越是有很多模板需要导入同一个对象的时候,就越显得其方便简洁,接下来演示个具体的案例
添加 ui_module
在 ui_modules 中添加如下代码
class Advertisement(UIModule):
def render(self, *args, **kwargs):
return self.render_string(‘06ad.html‘)
def css_files(self):
return "/static/css/King_Chance_Layer7.css"
def javascript_files(self):
return [
"/static/js/jquery_1_7.js",
"/static/js/King_Chance_Layer.js",
"/static/js/King_layer_test.js",
]
导入静态文件
导入给大家准备好的静态文件
模板中使用
% module Advertisement() %
04 模板其他命令
apply
% apply upper %
hello world hahaha
% end %
upper(‘hahaha‘)
使用apply语句,使用函数的作用范围到最近的%end%为止
linkify
%raw linkify(‘百度: http://www.baidu.com‘) %
以上是关于tornado框架基础05-模板继承UImodul和UImethods的主要内容,如果未能解决你的问题,请参考以下文章