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++之父的文章可以作为解答,遂 ...
随机推荐
- bzoj3489: A simple rmq problem (主席树)
//========================== 蒟蒻Macaulish:http://www.cnblogs.com/Macaulish/ 转载要声明! //=============== ...
- BZOJ1008:[HNOI2008]越狱——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1008 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中 ...
- LOJ2350:[JOI2017/2018决赛]月票购买——题解
https://loj.ac/problem/2350 比较简单的题,为什么我实现得这么sb? 第一个包其实已经给了提示(第一个包的解法就是在S->T所有最短路径上的所有点到V的最短路的最小值. ...
- Leetcode中字符串总结
本文是个人对LeetCode中字符串类型题目的总结,纯属个人感悟,若有不妥的地方,欢迎指出. 一.有关数字 1.数转换 题Interger to roman和Roman to integer这两题是罗 ...
- bzoj2326:[HNOI2011]数学作业(分段矩阵乘法)
题目大意:输入n(n<=10^18)和m,将1~n的整数连起来模m输出,比如n=13则输出12345678910111213模m的数. 设f[i]为1~i整数连起来模m的数,i的位数为k,则有f ...
- TYVJ1423 GF和猫咪的玩具
Description: GF同学和猫咪得到了一个特别的玩具,这个玩具由n个金属环(编号为1---n),和m条绳索组成,每条绳索连接两个不同的金属环,并且长度相同.GF左手拿起金属环L,猫咪右手(或者 ...
- LVM分区
使用LVM对磁盘进行初始化 pvcreate /dev/vdd 创建卷组 vgcreate vg /dev/vdd 备注:vg是卷组的名称,可改变. 查看卷组的详细信息 vgdisplay 下图是我执 ...
- kubernetes创建资源对象yaml文件例子--pod详解
apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 metadata: #资源的元数据/属性 name: ...
- Mabatis(2) 全局配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC & ...
- emqtt新版升级一些事项和操作
注解 Erlang/OTP R19依赖lksctp-tools库 yum install lksctp-tools 控制台地址: http://127.0.0.1:18083,默认用户: admin, ...