import tornado.ioloop
import tornado.web
import tornado.httpserver # 非阻塞
import tornado.options # 提供了多种选择 python xxx.py --port=xxxx
from tornado.options import define,options import util.ui_methods
import util.ui_modules define('port',default=8000,help='run port',type=int) # windows通过Ctrl+鼠标左键
define('version',default=0.1,help='version',type=str) class ExtHandler(tornado.web.RequestHandler):
def haha(self):
return 'succeed to use haha' def get(self):
self.render("five-extend.html",
haha=self.haha,            # 引用haha函数
new=New,
) class New:
def area(self,a,b):
return a*b application = tornado.web.Application(
handlers=[ # 列表按顺序匹配
(r"/ext", ExtHandler),
],
template_path='templates', # 表明页面html的路径
static_path='static',
ui_methods=util.ui_methods,               # 导入ui_methods函数
ui_modules=util.ui_modules,               # 等同下 dict 导入类 ui_modules
# ui_modules={'UiModule':util.ui_modules.UiModule},
debug=True, # 上传代码后服务器自动重启 ) if __name__ == '__main__':
tornado.options.parse_command_line() # 通过sys.arg获取命令行输入参数(python xxx.py --port=xxx)
print(options.port)
print(options.version)
http_server = tornado.httpserver.HTTPServer(application) # 非阻塞
application.listen(options.port)
tornado.ioloop.IOLoop.instance().start() # 启动io循环

extend,及函数,类的导入

{% extends five-moudle.html %}

{%block title1%}Extend{% end %}

{%block body%}
this is tornado extend {% include five-include.html %} {% include five-include.html %} <br> {{ haha() }} <br> 调用haha函数
{# 类的地址 #}
{{ new }} <br>
{# 类实例 #}
{{ new() }} <br> {{ new().area(2,3) }} <br> {% import time %}                   导入time函数
{{time.time()}} <br> 使用time.time {% from util.mod_file import add,upper %}    从util.mod_file模块导入函数add,upper
{{add(22,11)}} <br> {% module UiModule() %} <br>           调用UiModule这个类
{{ methods1() }} <br>                调用UiModule这个类的methods1方法 {% module Advertisement() %} <br> {% apply upper %}                  了解apply ,linkify
hello world
{% end %} <br> {% raw linkify('百度链接:https://www.baidu.com') %} {% end %}
# 知识点

# 模板
# 继承模板extend
#{% extends 父模板.html %} 子模版继承父模板所有的内容
# block块子模版重写父模板内容 name相当于变量
# 1.{% block name %} 父模板中的内容 {% end %}}
# 2.{% block name %} 在子模版修改新的内容 {% end %}}
# 单继承就好,别多继承。html不会报错所以可以继承多个页面 # 在子模版中新增内容 include (多个html相同的不完整html内容,把内容写在一个模板通过include导入)
# 在继承(extend)的模块里新增内容
# five-include.html为新增的内容
# 写在extend的子模版需要新增内容的位置{% include five-include.html %}
# 一般include的模块中不使用block块和extend # 在模板中导入函数
# 先在render方法加上 haha = self.haha, 类里面的一个函数调用类的另一个函数 self.haha
# 再通过 子模版 {{ haha() }} 调用 # 在子模板中导入类
# 情况一 通过tornado渲染
# 导入父模板中New这个类
# 在render方法中加入 new = New,
# 在extend子模版中写入
# {{new}} 类本身
# {{new()}} 类的实例
# {{new().area(2, 3)}} 类的area方法
# 情况二 import 和 from import
# 子模版导入另一个模板里面的类 util为文件名
# 1. {% from util.mod_file import add %}
# 2. {{add(2+3)}}
# 情况三 更好点
# 在父模板中导入导入其他模板的函数和类
# 1.新建函数文件ui_methods,py和类文件ui_modules.py
# 分别写入 函数 和 类
#函数 def methods1(self): # 加上self
# return 'this is ui_methods1' #类 from tornado.web import UIModule
# class UiModule(UIModule): # 类需要继承UIModule
# def render(self, *args, **kwargs): # 并重写render方法
# return '我是 ui_modules'
# 2.在项目中导入
# import util.ui_methods
# import util.ui_modules
# 3.配置application参数
# ui_methods = util.ui_methods,
# ui_modules = util.ui_modules, 等同下 dict的形式
# 类名 路径
# ui_modules={'UiModule':util.ui_modules.UiModule},
# 4.在子模板中调用
# {% module UiModule() %} 类
# {{ methods1() }} 函数
# 了解
# {% apply upper %} hello world {% end %} def upper(a): return a.upper() 将所有的字符串都在upper执行一边
  # {% raw linkify('百度链接:https://www.baidu.com') %} 将内容变成a链接
 

tornado-模板继承extend,函数和类的导入的更多相关文章

  1. python 全栈开发,Day70(模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介)

    昨日内容回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...

  2. Django基础(2)--模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介

    没整理完 昨日回顾: 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 ...

  3. thinkphp 中区块block和模板继承extend用法举例

    1.介绍 模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区块(block),然后继承(extend)该基础模板的子模板中就可以对基础模板中定义 ...

  4. Django 模板继承extend 标签include block

    # block 站网页位置# includ 导入网页标签# extends 导入网页模板 # common_js.html <script src="/static/plugins/j ...

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

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

  6. Django模板自定义标签和过滤器,模板继承(extend),Django的模型层

    上回精彩回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...

  7. 模板继承(extend)——(Day68)

    模板继承 (extend) Django模版引擎中最强大也是最复杂的部分就是模版继承了.模版继承可以让您创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 block ...

  8. Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)

    前言:当我们想在页面上给客户端返回一个当前时间,一些初学者可能会很自然的想到用占位符,字符串拼接来达到我们想要的效果,但是这样做会有一个问题,HTML被直接硬编码在 Python代码之中. 1 2 3 ...

  9. 模板继承和UImodul 和 UImethods

     模板继承和UImodul 和 UImethods 模板的继承 {% extends path %} path为templates下的相对路径 {% block block_name %}conten ...

随机推荐

  1. TX2平台CAN总线收发功能的测试

    前言 项目实现过程中需要将获取的数据信息通过CAN总线传输到控制规划模块,本文主要介绍如何在TX2平台测试CAN总线的收发功能. TX2是英伟达旗下为嵌入式平台人工智能应用开发出的一个硬件平台,TX1 ...

  2. CodeForces - 325E:The Red Button (哈密尔顿 转 欧拉回路)

    Piegirl found the red button. You have one last chance to change the inevitable end. The circuit und ...

  3. 51Nod 1058: N的阶乘的长度(斯特林公式)

    1058 N的阶乘的长度  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3. Inp ...

  4. 【JVM】jvm至jstack命令

    一.介绍 jstack是java虚拟机自带的一种堆栈跟踪工具.jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项&qu ...

  5. RPC好,还是RESTful好?

    看到知乎上有这样一个问题 WEB开发中,使用JSON-RPC好,还是RESTful API好? 还有其他优秀的推荐方案吗? -------------------------------------- ...

  6. bat生成vbs通过注册表禁用或启用USB端口

    在网上找到的资料,经过自己简单的修改调整,通过bat生成vbs文件,由vbs文件操作注册表的键值,达到启用和禁用USB端口的目的. 当然,你也可以完全使用BAT操作注册表来完成修改注册表的键值的目的, ...

  7. HTTP协议中的长连接、短连接、长轮询、短轮询

    长连接.短连接,指的是TCP连接.长连接是为了复用TCP连接. 长轮询中,服务器如果检测到库存量没有变化的话,将会把当前请求挂起一段时间(这个时间也叫作超时时间,一般是几十秒).在这个时间里,服务器会 ...

  8. centos 安装 mysql(指定安装版本)

    第一步: 下载 mysql 包 第二步:   rpm -Uvh mysql文件名.rpm ,这里是 rpm 其实不是安装mysql ,而是安装了一个mysql 的 yum 源 仓库 /etc/yum. ...

  9. VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    查找是否有两个cvtres.exe.一个是C:\Program Files(x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe, 另一个是C:\Wi ...

  10. vue 之radio绑定v-model

    示例: 单选radio <label ><input type="radio" value="0" v-model="branch& ...