模板继承和UImodul 和 UImethods
模板继承和UImodul 和 UImethods
- 模板的继承
- {% extends path %}
- path为templates下的相对路径
- block_name:块名字
- content:中间包裹的内容
- 和django的block一致
- {% include path %}
- 包含的模板路径
- 参考链接:https://www.cnblogs.com/ivy-blogs/p/10654806.html
{% block block_name %}content{% end %}
- {% extends path %}
- 函数跟类的导入:
- UImodul和UImethods
- 新建个util包
- 在里面新建uimethods.py和uimodules.py两个文件
- 在定义app的路由所在的文件下导入这两个文件
- Application给ui_methods和ui_modules传参等于导入的文件名
- from tornado.web import RequestHandler, Application
- from tornado.httpserver import HTTPServer
- from tornado.options import options, define
- from tornado.ioloop import IOLoop
- from util import uimethods, uimodules
- define('port', default=7981, type=int)
- class IndexHandle(RequestHandler):
- def get(self):
- self.render('index.html')
- application = Application(
- handlers=[
- (r'/', IndexHandle)
- ],
- template_path='templates',
- ui_methods=uimethods,
- ui_modules=uimodules
- )
- if __name__ == '__main__':
- options.parse_command_line()
- app = HTTPServer(application)
- app.listen(options.port)
- IOLoop.current().start()
- from tornado.web import RequestHandler, Application
- ulmethods使用
- def test(self): return 'test'
- ulmethods里面的方法第一个参数必须为self
- ulmodules使用
- from tornado.web import UIModule
- class TestModule(UIModule):
- def render(self, *args, **kwargs):
- return 'TestModule'
先建的类必须继承自UIModule类,当该类实例化的时候,会自动执行render方法
- from tornado.web import UIModule
- class TestModule(UIModule):
- def render(self, *args, **kwargs):
- self.render_string('index.html')
渲染页面
- from tornado.web import UIModule
- class TestModule(UIModule):
- def render(self, *args, **kwargs):
- self.render_string('index.html')
- def javascript_files(self):
- return 'your javascript_files path'
- def css_files(self):
- return 'your jcss_files path'
静态资源加载,如果路径有多个,则返回列表形式
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- {% module TestModule() %}
- <br>
- {{ test() }}
- </body>
- </html>
具体使用
- <!DOCTYPE html>
- 模板的其他命令
- def test(self): return 'test'
- def upper(self, text):
- if isinstance(text, str):
- return text.upper()
- raise TypeError
在ulmethod里面定义一个upper方法
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- {{ upper('hello') }}
- </body>
- </html>
使用该方法
- <!DOCTYPE html>
- 当传入的参数比较大的时候,这种方法显得不太美观
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- {% apply upper %}
- asdasdasddddddddd
- {% end %}
- </body>
- </html>
apply可以扩大后面方法的作用范围,以end结尾
- <!DOCTYPE html>
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- {{ linkify ('http://www.baidu.com') }}
- {% raw linkify ('http://www.baidu.com') %}
- </body>
- </html>
linkify后接一个元祖,会自动识别元祖内的url,将其解析为a标签,但需要取消转译
- <!DOCTYPE html>
模板继承和UImodul 和 UImethods的更多相关文章
- tornado框架基础05-模板继承、UImodul和UImethods
01 模板继承 父模板 <html lang="en"> <head> <meta charset="UTF-8"> ...
- Python自动化之模板继承和cookie
request请求头信息 type(request) //查看类 from django.core.handlers.wsgi import WSGIRequest 结果会以字典的形式存在 reque ...
- Django(4)html模板继承、模板导入、分页实现
1.获取所有请求信息 导入模块:from django.core.handlers.wsgi import WSGIRequest request.environ:包含所有的请求信息,可以打印看一下, ...
- tp框架之模板继承
模板继承是一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层.模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区 ...
- Django 中url补充以及模板继承
Django中的URL补充 默认值 在url写路由关系的时候可以传递默认参数,如下: url(r'^index/', views.index,{"name":"root& ...
- Thinkphp3.2中的模板继承
1:模板继承: 是3.1.2版本添加的一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层.模板继承其实并不难理解,就好比 类的继承一样,模板也可以定义一个基础模板( ...
- Django1.9开发博客(6)- 模板继承
模板继承就是网站的多个页面可以共享同一个页面布局或者是页面的某几个部分的内容.通过这种方式你就需要在每个页面复制粘贴同样的代码了. 如果你想改变页面某个公共部分,你不需要每个页面的去修改,只需要修改一 ...
- thinkphp中模板继承
模板继承是3.1.2版本添加的一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层.模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局), ...
- python【第二十一篇】Django模板继承、分页、cookie验证
1.模板继承 母版master.html {% block title %}{% endblock %}2 {% block table-cont %}{% endblock %} 子板 {% ext ...
随机推荐
- 大型Java进阶专题(四) 设计模式之工厂模式
前言 今天开始我们专题的第三课了,开始对设计模式进行讲解,本章节介绍:了解设计模式的由来,介绍设计模式能帮我们解决那些问题以及剖析工厂模式的历史由来及应用场景.本章节参考资料书籍<Sprin ...
- 记一次修改mysql密码
因为马大哈的原因,没有记录自己服务器mysql的密码,试来试去试不出来只好选择重置密码. 直接上命令: 首先 vim /etc/my.cnf 在my.cnf文件中,在[mysqld]的段中加上 ski ...
- C++类复习及新的认识 6.1.1+6.1.2内容(适合看过一遍书的新手)
作者水平有限,文字表述大多摘抄课本,源码部分由课本加自己改编而成,所有代码均在vs2019中编译通过 定义类操作 class Tdate { public: void Set(int m, int d ...
- url,解释器,响应器,版本控制,分页
路由控制 -基本路由写法:咱们一直写的
- 从SqlSessionFactoryBean的引用浅谈spring两种bean模式
mybatis是以一个 SqlSessionFactory 的实例为中心的.SqlSessionFactory可以通过SqlSessionFactoryBuilder获得实例.使用mybatis-sp ...
- Java的集合框架综述
集合 用于存储和管理数据的实体被称为数据结构(data structure).数据结构可用于实现具有不同特性的集合对象,这里所说的集合对象可以看作一类用于存储数据的特殊对象. 集合内部可以采用某种数据 ...
- Alpine Linux 常用命令
一:Alpine Linux开启SSH远程登陆 1.简介: 最重要的一个服务了,远程登陆需要用它,文件传输需要用它,必备功能.不管你是在实体机上跑,虚拟机上跑,docker里面跑,这个都是必须的. 2 ...
- Jmeter4.0接口测试之断言实战(六)
在接口测试用例中得有断言,没有断言的接口用例是无效的,一个接口的断言有三个层面,一个是HTTP状态码的断言,另外一个是业务状态码的断言,最后是某一接口请求后服务端响应数据的断言.在Jmeter中增加断 ...
- 使用FME对CAD管网数据进行过滤、聚合、中心点替换
1.首先加载CAD数据,并暴露出需要使用到的相关字段.比如:block_number.fme_geometry.fme_color等字段. 2.对一个元素有多种类型部件的需要进行过滤,例如本次的检修井 ...
- 好记性-烂笔头:JDK8流操作
1):对象 List<User> 转 Map<String,Object> 案例如下: public class User { private Integer id; priv ...