## 06ui.py
#coding:utf-8
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web from tornado.options import define,options
import util.ui_methods
import util.ui_modules
define('port',default=8000,help='run port',type=int)
define('version',default='0.0.1',help='version 0.0.1',type=str) class Calculation():
def sum(self, a, b):
return a + b class UiHandler(tornado.web.RequestHandler): def func(self):
return 'nanian'
def get(self):
username=self.get_argument('name','no')
self.render('07module.html',
username=username,
fun=self.func,
calc=Calculation, ) if __name__ == "__main__":
tornado.options.parse_command_line()
# print(options.port)
app=tornado.web.Application(
handlers=[
(r'/ui',UiHandler),
],
template_path='templates',
static_path='static',
ui_methods=util.ui_methods,
ui_modules=util.ui_modules,
#ui_modules={'Uimodule':util.ui_modules.Uimodule,'Advertisement':util.ui_modules.Advertisement},
debug=True,
#autoescape=None, #关闭自动转义 全局的
)
#固定写法:
http_server=tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start() ## ui_modules.py
'''
this is module
'''
from tornado.web import UIModule
#类必须继承UIModule,必须重写render方法
class Uimodule(UIModule):
def render(self, *args, **kwargs):
return '我是ui_module'
class Advertisement(UIModule):
def render(self, *args, **kwargs):
return self.render_string('07ad.html')
def css_files(self):
return "css/King_Chance_Layer7.css"
def javascript_files(self):
return [
#注意,jquery在最前
"js/jquery_1_7.js",
"js/King_Chance_Layer.js", "js/King_Layer_test.js", ]
## ui_methods.py
'''
this is method
''' def ui_method1(self):
return 'ui_method1' def ui_method2(self):
return 'ui_method2'
## 07module.html
<!DOCTYPE html>
<br lang="en">
<head>
<meta charset="UTF-8">
<title>模板</title>
</head>
<br>
{{ username }}</br>
{{ fun() }}</br> {{ calc() }}<br>
{{ calc().sum(6,9) }}</br> {% import time %}
{{ time.time() }}<br> {% from util.module_file import sub,upper,Count %} {{ sub(5,3) }}</br>
{{ upper('abcd') }}</br> {{ Count().url}}</br>
{{ Count().sum(6,9) }}</br>
{{ Count.sum(6,9) }}</br> {{ ui_method1() }}</br>
666 </br>
{% module Uimodule() %}</br>
666
{% module Advertisement() %}</br> set设置局部变量
{% set su=Count().sum %}
{{ su(6,9) }}</br> {% apply upper %}
hao e </br>
bu e
{% end %}
</br> {{ linkify('百度:http://www.baidu.com') }}</br>
{% raw linkify('百度:http://www.baidu.com') %}</br> </body>
</html>

ui_modules和ui_method的更多相关文章

  1. Python框架之Tornado(三)请求

    概述 本篇就来详细介绍tornado服务器(socket服务端)是如何接收用户请求数据以及如果根据用户请求的URL处理并返回数据,也就是上图的3 系列所有步骤,如上图[start]是一个死循环,其中利 ...

  2. 第三篇:白话tornado源码之请求来了

    上一篇<白话tornado源码之待请求阶段>中介绍了tornado框架在客户端请求之前所做的准备(下图1.2部分),本质上就是创建了一个socket服务端,并进行了IP和端口的绑定,但是未 ...

  3. Tornado源码探寻(请求到来)

    上一篇中介绍了tornado框架在客户端请求之前所做的准备(下图1.2部分),本质上就是创建了一个socket服务端,并进行了IP和端口的绑定,但是未执行 socket的accept方法,也就是未获取 ...

  4. Python框架之Tornado(请求)

    概述 本篇就来详细介绍tornado服务器(socket服务端)是如何接收用户请求数据以及如果根据用户请求的URL处理并返回数据,也就是上图的3系列所有步骤,如上图[start]是一个死循环,其中利用 ...

  5. tornado 模板引擎

    在tornado的模板引擎中,有两种方式,UImethod与UImodule 自定义方法 在模板中调用方法: tornado:与Django一样使用{{}},但是对于for循环之类,Django以{% ...

  6. tornado 模版继承 函数和类的调用

    模版继承.函数和类的调用 目录结构 lesson5.py # -*- coding:utf-8 -*- import tornado.web import tornado.httpserver imp ...

  7. Python(九)Tornado web 框架

    一.简介 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过 ...

  8. Python框架之Tornado(二)请求阶段

    概述 上图是tornado程序启动以及接收到客户端请求后的整个过程,对于整个过程可以分为两大部分: 启动程序阶段,又称为待请求阶段(上图1.2所有系列和3.0) 接收并处理客户端请求阶段(上图3系列) ...

  9. tornado web 框架的认识

    tornado 简介 1,概述 Tornado就是我们在 FriendFeed 的 Web 服务器及其常用工具的开源版本.Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的 ...

随机推荐

  1. C语言字符篇(五)内存函数

    memcpy不可以把目的地址写成本身 但是memmove可以,因为它是先保存到临时空间 #include <string.h>   void *memcpy(void *dest, con ...

  2. POJ:2739-Sum of Consecutive Prime Numbers(尺取)

    Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 27853 Ac ...

  3. 探究SynchronizationContext在.Net异步编程中的地位

    原文:探究SynchronizationContext在.Net异步编程中的地位 引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要去学习,贴心的.NET提供Task线程包装类和await/a ...

  4. 使用Autofac实现依赖注入注入

    依赖注入是什么意思? 依赖倒置 在软件设计原则中,有一种重要的思想叫做依赖倒置.它的核心思想是:不能让高层组件依赖底层组件,而且,不管高层组件和底层组件,两者都应依赖于抽象.那么,这个原则和我们上面的 ...

  5. 图的深度优先遍历&广度优先遍历

    1.什么是图的搜索? 指从一个指定顶点可以到达哪些顶点   2.无向完全图和有向完全图 将具有n(n-1)/2条边的无向图称为无向完全图(完全图就是任意两个顶点都存在边). 将具有n(n-1)条边的有 ...

  6. Result Maps collection does not contain value for XXXXX

    在做mybatis多表查询的时候,出现了下面的错误: java.lang.IllegalArgumentException: Result Maps collection does not conta ...

  7. sqlsever存储过程学习笔记

    1,创建数据表 use test create table money( id ,) primary key, money int, monetary_unity char ); 2,考虑到货币单位的 ...

  8. centos使用--centos7.3配置LNMP

    目录 1 源的配置 2 安装软件 2.1 安装php7 2.2 安装nginx 2.3 安装mysql 2.4 安装vsftp (ftp登录配置) 3 开机启动设置 4 其它一些配置 4.1 git的 ...

  9. FTP使用心得

    1、创建文件夹的函数,一次只能创建一层。 2、没有现成的判断文件夹是否存在的函数,如果文件夹不存在就创建,会报异常。有以下封装好的函数。可以直接调用。 1 2 3 4 5 6 7 8 9 10 11 ...

  10. 《Cracking the Coding Interview》——第3章:栈和队列——题目4

    2014-03-18 05:28 题目:你肯定听过汉诺威塔的故事:三个柱子和N个从小到大的盘子.既然每次你只能移动放在顶上的盘子,这不就是栈操作吗?所以,请用三个栈来模拟N级汉诺威塔的玩法.放心,N不 ...