模版继承、函数和类的调用

目录结构

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 模版继承 函数和类的调用的更多相关文章

  1. python中不同文件中函数和类的调用

    最近在学习Python的时候,遇到了一个不同文件中类无法调用的问题,搜了很多,发现很多人针对 这个问题都说的相当含糊,让我费了好大劲才把这个东东搞明白.记录一下,权且温习. 调用分两种,一种是同种文件 ...

  2. 编写一个带有main函数的类,调用上面的汽车类,实例化奔驰、大众、丰田等不同品牌和型号,模拟开车过程:启动、加速、转弯、刹车、息火,实时显示速度。

    //程序入口    public static void main(String[] args) {        // TODO Auto-generated method stub         ...

  3. tornado-模板继承extend,函数和类的导入

    大 import tornado.ioloop import tornado.web import tornado.httpserver # 非阻塞 import tornado.options # ...

  4. 继承虚函数浅谈 c++ 类,继承类,有虚函数的类,虚拟继承的类的内存布局,使用vs2010打印布局结果。

    本文笔者在青岛逛街的时候突然想到的...最近就有想写几篇关于继承虚函数的笔记,所以回家到之后就奋笔疾书的写出来发布了 应用sizeof函数求类巨细这个问题在很多面试,口试题中很轻易考,而涉及到类的时候 ...

  5. C++中的类继承(2)派生类的默认成员函数

    在继承关系里面, 在派生类中如果没有显示定义这六个成员 函数, 编译系统则会默认合成这六个默认的成员函数. 构造函数. 调用关系先看一段代码: class Base { public : Base() ...

  6. C++基础知识-派生类、调用顺序、访问等级、函数遮蔽

    一.派生类的概念 类之间有一种层次关系,有父亲类,有孩子类. 车这个类,当成父类(也叫基类.超类),派生出卡车.轿车,他们属于孩子类(子类.派生类) 继承:有父亲类,有孩子类,构成了层次关系.继承这种 ...

  7. Python中函数、类、模块和包的调用

    初学python阶段,大多数人对函数.类.模块和包的调用都搞得不是很清楚,这篇随笔就简单的进行说明. (1)函数 当函数定义好之后,可以直接调用. 比如:def summ(add1,add2),那么 ...

  8. c++ 类模版、成员函数模版、函数模版 用法

    C++函数模版与类模版. template <class T> void SwapFunction(T &first, T &second){ }//函数模版 templa ...

  9. C中如何调用C++函数、类内函数 \混编\链接

    在C中如何调用C++函数的问题,简单回答是将函数用extern "C"声明,当被问及如何将类内成员函数声明时,一时语塞,后来网上查了下,网上有一翻译C++之父的文章可以作为解答,遂 ...

随机推荐

  1. POJ2549:Sumsets——题解

    http://poj.org/problem?id=2549 题目大意:从集合中找到四个不相同的数,满足a+b+c=d,输出最大的d. —————————————————————————— 该式子变为 ...

  2. BZOJ2654 & 洛谷2619:tree——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=2654 https://www.luogu.org/problemnew/show/P2619 给你 ...

  3. BZOJ3992:[SDOI2015]序列统计——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=3992 https://www.luogu.org/problemnew/show/P3321 小C ...

  4. UVA.839 Not so Mobile ( 二叉树 DFS)

    UVA.839 Not so Mobile ( 二叉树 DFS) 题意分析 给出一份天平,判断天平是否平衡. 一开始使用的是保存每个节点,节点存储着两边的质量和距离,但是一直是Runtime erro ...

  5. UVA.11384 Help is needed for Dexter (思维题)

    UVA.11384 Help is needed for Dexter (思维题) 题意分析 同样水题一道,这回思路对了. 给出数字n,面对一个1,2,3,4--n的数字序列,你可以对他们的部分或者全 ...

  6. 【树形DP】【P1364】医院放置

    传送门 Description 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接 ...

  7. Hive架构及应用介绍【链接】

    原文链接:https://blog.csdn.net/a2011480169/article/details/51482799

  8. XML 树结构,语法规则,元素,属性,验证及其解析

    XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶". 一个 XML 文档实例 XML 文档使用简单的具有自我描述性的语法: <?xml v ...

  9. mapper的前后缀

    1.<trim prefix="" suffix="" suffixOverrides="" prefixOverrides=&quo ...

  10. Codeforces Round #201 (Div. 2)C,E

    数论: C. Alice and Bob time limit per test 2 seconds memory limit per test 256 megabytes input standar ...