tornado 模版继承 函数和类的调用
模版继承、函数和类的调用
目录结构

lesson5.py
# -*- coding:utf-8 -*- import tornado.web
import tornado.httpserver
import tornado.options
import tornado.ioloop
import util.ui_modules
import util.ui_methods from tornado.options import define,options define('port', default=8080, help='run port', type=int) # 定义端口
define('version', default='0.0.1', help='version 0.0.1', type=str) # 定义版本 class MainHandler(tornado.web.RequestHandler): # 定义路由 def get(self):
self.render('extend04.html',
haha = self.haha,
) def haha(self):
return '哈哈哈哈' class NotFoundHandler(tornado.web.RequestHandler): # 若路由未匹配上,则跳转到出错页面 def get(self, *args, **kwargs): # 这里要发送404 否则会出现 405
self.send_error(404) def write_error(self, status_code, **kwargs):# 重写错误页面
self.render('error.html') #会覆盖前面的 self.render('error.html') application = tornado.web.Application(
handlers = [
(r"/",MainHandler),
(r"/(.*)", NotFoundHandler),
],
template_path = 'template', # 指定路径
static_path= 'static',
ui_methods=util.ui_methods, # 等号左侧是固定写法,不能变
ui_modules=util.ui_modules, # 等号左侧是固定写法,不能变
debug = True # 调试模式 文件修改后 自动重启服务器
) if __name__ == '__main__':
print(options.port)
print(options.version)
tornado.options.parse_command_line()
# app = tornado.web.Application( handlers=[(r'/',MainHandler),] )
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(options.port) # 监听端口
tornado.ioloop.IOLoop.instance().start() #服务器自动循环 等待访问
extend04.html
{% extends base03.html %}<!--extends 继承base03.html,一般只继承一个 -->
{% block title %} base_300 {% end %}<!--block 修改block里的内容 -->
{% block body %}<!--block 修改block里的内容 -->
hello everyone !
{% include include05.html %} <!--include 包含(不是修改)include05.html 被导入的文件不能含extend 、block-->
<br>
{% import time %} <!--引入模块 -->
{{ time.time() }}
<br>
{{ haha() }}<!--调用函数 -->
<br>
{% from util.mod_file import adda,upper %}<!--调用自定义模块里的函数 -->
{{ adda(3,5) }}
<br>
{% module UiModule() %}<!--调用自定义模块里的类 -->
<br>
{{methods1()}}<!--调用自定义模块里的函数 -->
<br>
{% apply upper %} <!--使用函数的作用范围到最近的{%end%}为止 -->
lasdjflkdsjfl
{% end %}
<br>
{% raw linkify('百度raw版:http://www.baidu.com') %}<!--html解析 a标签 -->
<br>
{{ linkify('百度:http://www.baidu.com') }}<!--html不解析 a标签 -->
<br>
{{ adda(3,5) }}
<br>
{% module Advertisement() %} <!--案例 植入广告 -->
{% end %}
base03.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %} base03 {% end %}</title>
<link rel="shortcut icon" href="{{ static_url('images/favicon.ico') }}">
<style>
div{
margin: 30px
}
</style>
</head>
<body>
<div>
{% block body %}
hello world !
{% end %}
</div>
</body>
</html>
include05.html
<br>
this is tornado include
<br>
mod_file.py
def adda(a,b):
return '乘积是:' + str(a*b) def upper(a):
return a.upper()
ui_methods.py
''' this is ui_method
''' def methods1(self):
return 'ui_methods1'
ui_modules.py
'''
this is ui_modules '''
from tornado.web import UIModule # 必须导入这个 UIModule 类 class UiModule(UIModule):# 固定继承类 UIModule def render(self,*args,**kargs): #固定写法 render(self,*args,**kargs)
return '我是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",
]
tornado 模版继承 函数和类的调用的更多相关文章
- python中不同文件中函数和类的调用
最近在学习Python的时候,遇到了一个不同文件中类无法调用的问题,搜了很多,发现很多人针对 这个问题都说的相当含糊,让我费了好大劲才把这个东东搞明白.记录一下,权且温习. 调用分两种,一种是同种文件 ...
- 编写一个带有main函数的类,调用上面的汽车类,实例化奔驰、大众、丰田等不同品牌和型号,模拟开车过程:启动、加速、转弯、刹车、息火,实时显示速度。
//程序入口 public static void main(String[] args) { // TODO Auto-generated method stub ...
- tornado-模板继承extend,函数和类的导入
大 import tornado.ioloop import tornado.web import tornado.httpserver # 非阻塞 import tornado.options # ...
- 继承虚函数浅谈 c++ 类,继承类,有虚函数的类,虚拟继承的类的内存布局,使用vs2010打印布局结果。
本文笔者在青岛逛街的时候突然想到的...最近就有想写几篇关于继承虚函数的笔记,所以回家到之后就奋笔疾书的写出来发布了 应用sizeof函数求类巨细这个问题在很多面试,口试题中很轻易考,而涉及到类的时候 ...
- C++中的类继承(2)派生类的默认成员函数
在继承关系里面, 在派生类中如果没有显示定义这六个成员 函数, 编译系统则会默认合成这六个默认的成员函数. 构造函数. 调用关系先看一段代码: class Base { public : Base() ...
- C++基础知识-派生类、调用顺序、访问等级、函数遮蔽
一.派生类的概念 类之间有一种层次关系,有父亲类,有孩子类. 车这个类,当成父类(也叫基类.超类),派生出卡车.轿车,他们属于孩子类(子类.派生类) 继承:有父亲类,有孩子类,构成了层次关系.继承这种 ...
- Python中函数、类、模块和包的调用
初学python阶段,大多数人对函数.类.模块和包的调用都搞得不是很清楚,这篇随笔就简单的进行说明. (1)函数 当函数定义好之后,可以直接调用. 比如:def summ(add1,add2),那么 ...
- c++ 类模版、成员函数模版、函数模版 用法
C++函数模版与类模版. template <class T> void SwapFunction(T &first, T &second){ }//函数模版 templa ...
- C中如何调用C++函数、类内函数 \混编\链接
在C中如何调用C++函数的问题,简单回答是将函数用extern "C"声明,当被问及如何将类内成员函数声明时,一时语塞,后来网上查了下,网上有一翻译C++之父的文章可以作为解答,遂 ...
随机推荐
- POJ3648:Wedding——题解(配2-SAT简易讲解)
http://poj.org/problem?id=3648 (在家,而且因为2-SAT写的不明不白的,所以这篇详细写) 题目大意: 有一对新人结婚,邀请了n-1 对夫妇去参加婚礼.婚礼上所有人要坐在 ...
- HDOJ.2094 产生冠军(map)
产生冠军 点我挑战题目 点我一起学习STL-MAP 题意分析 给出n组数据,代表a打败了b,让判断根据这n组数据是否能判断出来产生了冠军.一开始以为这道题很难,其实用map可以应付. 大原则,赢了的人 ...
- PC蓝牙通信C#代码实现
PC蓝牙通信C#代码实现 这篇文章主要为大家详细介绍了PC蓝牙通信C#代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C#实现PC蓝牙通信代码,供大家参考,具体内容如下 ...
- Ubuntu安装CUDA9.0 + cuDNN
本篇文章是基于安装CUDA 9.0的经验写,CUDA9.0目前支持Ubuntu16.04和Ubuntu17.04两个版本,如下图所示(最下面的安装方式我们选择第一个,即runfile方式): 下载链接 ...
- 题解【luoguP1351 NOIp提高组2014 联合权值】
题目链接 题意:给定一个无根树,每个点有一个权值.若两个点 \(i,j\) 之间距离为\(2\),则有联合权值 \(w_i \times w_j\).求所有的联合权值的和与最大值 分析: 暴力求,每个 ...
- LightOJ 1135 - Count the Multiples of 3 线段树
http://www.lightoj.com/volume_showproblem.php?problem=1135 题意:给定两个操作,一个对区间所有元素加1,一个询问区间能被3整除的数有多少个. ...
- LightOJ 1028 - Trailing Zeroes (I) 质因数分解/排列组合
题意:10000组数据 问一个数n[1,1e12] 在k进制下有末尾0的k的个数. 思路:题意很明显,就是求n的因子个数,本来想直接预处理欧拉函数,然后拿它减n就行了.但注意是1e12次方法不可行.而 ...
- [洛谷P3338] [ZJOI2014]力
洛谷题目链接:P3338 [ZJOI2014]力 题目描述 给出n个数qi,给出Fj的定义如下: \[F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_ ...
- [Luogu 2261] CQOI2007 余数求和
[Luogu 2261] CQOI2007 余数求和 这一定是我迄今为止见过最短小精悍的省选题了,核心代码 \(4\) 行,总代码 \(12\) 行,堪比小凯的疑惑啊. 这题一看暴力很好打,然而 \( ...
- 【BZOJ1975】【SDOI2010】魔法猪学院 [A*搜索]
魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description iPig在假期来到了传说中的魔法猪 ...