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

目录结构

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. [洛谷P3380]【模板】二逼平衡树(树套树)

    题目大意:有$5$种操作: $1\;l\;r\;k:$查询$k$在区间$[l,r]$内的排名 $2\;l\;r\;k:$查询区间$[l,r]$内排名为$k$的值 $3\;pos\;k:$把第$pos$ ...

  2. [CQOI2014]数三角形 组合数 + 容斥 + gcd

    推导过程 : 组合数+容斥原理+gcd 正确做法是暴力的一种优化,ans=所有情况 - 平行坐标轴的三点共线 - 斜线三点共线 如果快速求斜线三点共线: 首先要知道一个结论,对于点(a,b) (x,y ...

  3. POJ3974:Palindrome——题解

    http://poj.org/problem?id=3974 题目大意: 求最大回文子串长度. ———————————————————— 马拉车板子题. 马拉车大概讲解: 首先在每两个字母之间插入‘# ...

  4. 【转】TCP拥塞控制,慢启动、拥塞避免、快重传以及快恢复

    转自:http://blog.csdn.net/yusiguyuan/article/details/22847787 注:本文绝大部分是来自转载的博客,还补充了少量内容. 一.TCP的拥塞控制 拥塞 ...

  5. 【简单算法】40.Fizz Buzz

    题目: 写一个程序,输出从 到 n 数字的字符串表示. . 如果 n 是3的倍数,输出“Fizz”: . 如果 n 是5的倍数,输出“Buzz”: .如果 n 同时是3和5的倍数,输出 “FizzBu ...

  6. 解决无法安装cnpm,cnpm卡顿问题

    # 注册模块镜像 npm set registry https://registry.npm.taobao.org # node-gyp 编译依赖的 node 源码镜像 npm set disturl ...

  7. sublime Text 块编辑方法

    比如我们要把SQL语句中的多表查询结果封装成pojo SQL: SELECT a.id, a.title, a.sell_point, a.price, a.image, b.`name` categ ...

  8. 痛苦之旅——安装Eric4

    因为想做桌面程序,所以在学PyQt4, 顺便装了下Eric4,这Eric4装起来可不简单,活活花了一个星期..... 网上有很多装Eric4的教程,详细我就不说了,大概步骤是: 1.安装SIP (需要 ...

  9. canvas知识03:学写一个字案例

    效果

  10. ZooKeeper入门(四)

    入门:使用ZooKeeper的协调分布式应用 这个文档使你对ZooKeeper快速入门,它主要针对想尝试它的开发者.并且包含简单的单机的ZooKeeper服务的安装说明,一些验证是否运行的命令,和一个 ...