模板继承和UImodul 和 UImethods


  • 模板的继承

    • {% extends path %}

      • path为templates下的相对路径
    • {% block block_name %}content{% end %}

      • block_name:块名字
      • content:中间包裹的内容
      • 和django的block一致
    • {% include path %}
      • 包含的模板路径
    • 参考链接:https://www.cnblogs.com/ivy-blogs/p/10654806.html
  • 函数跟类的导入:
  • 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()
    • 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>

        具体使用

  • 模板的其他命令
    •  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>
      <html lang="en">
      <head>
      <meta charset="UTF-8">
      <title>Title</title>
      </head>
      <body>
      {% apply upper %}
      asdasdasddddddddd
      {% end %}
      </body>
      </html>

      apply可以扩大后面方法的作用范围,以end结尾

    •  <!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标签,但需要取消转译

模板继承和UImodul 和 UImethods的更多相关文章

  1. tornado框架基础05-模板继承、UImodul和UImethods

    01 模板继承 父模板​ <html lang="en"> <head>     <meta charset="UTF-8"> ...

  2. Python自动化之模板继承和cookie

    request请求头信息 type(request) //查看类 from django.core.handlers.wsgi import WSGIRequest 结果会以字典的形式存在 reque ...

  3. Django(4)html模板继承、模板导入、分页实现

    1.获取所有请求信息 导入模块:from django.core.handlers.wsgi import WSGIRequest request.environ:包含所有的请求信息,可以打印看一下, ...

  4. tp框架之模板继承

    模板继承是一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层.模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区 ...

  5. Django 中url补充以及模板继承

    Django中的URL补充 默认值 在url写路由关系的时候可以传递默认参数,如下: url(r'^index/', views.index,{"name":"root& ...

  6. Thinkphp3.2中的模板继承

    1:模板继承:   是3.1.2版本添加的一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层.模板继承其实并不难理解,就好比 类的继承一样,模板也可以定义一个基础模板( ...

  7. Django1.9开发博客(6)- 模板继承

    模板继承就是网站的多个页面可以共享同一个页面布局或者是页面的某几个部分的内容.通过这种方式你就需要在每个页面复制粘贴同样的代码了. 如果你想改变页面某个公共部分,你不需要每个页面的去修改,只需要修改一 ...

  8. thinkphp中模板继承

    模板继承是3.1.2版本添加的一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层.模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局), ...

  9. python【第二十一篇】Django模板继承、分页、cookie验证

    1.模板继承 母版master.html {% block title %}{% endblock %}2 {% block table-cont %}{% endblock %} 子板 {% ext ...

随机推荐

  1. 网络编程---socket模块

    内容中代码都是先写  server端, 再写 client端 1 TCP和UDP对比 TCP(Transmission Control Protocol)可靠的.面向连接的协议(eg:打电话).传输效 ...

  2. Java-字符输入输出(新手)

    参考手册: BufferedReader BufferedWriter: 关键字: close() 关闭流,先刷新.    newLine() 写一行行分隔符.    write() 写一个字符    ...

  3. 《前端之路》- TypeScript (三) ES5 中实现继承、类以及原理

    目录 一.先讲讲 ES5 中构造函数(类)静态方法和多态 1-1 JS 中原型以及原型链 例子一 1-2 JS 中原型以及原型链中,我们常见的 constructor.prototype.**prot ...

  4. 如何用 Blazor 实现 Ant Design 组件库

    本文主要分享我创建 Ant Design of Blazor 项目的心路历程,已经文末有一个 Blazor 线上分享预告. Blazor WebAssembly 来了! Blazor 这个新推出的前端 ...

  5. 3. webdriver的常用方法

    WebDriver常用方法: clear(): 清除文本. send_keys (value): 模拟按键输入. click(): 单击元素. submit():用于提交表单 from seleniu ...

  6. Analysis of endogenous peptides released from osteoarthritic cartilage unravels novel pathogenic markers (解读人:李琼)

    文献名:Analysis of endogenous peptides released from osteoarthritic cartilage unravels novel pathogenic ...

  7. mac redis搭建集群

    1.下载redis客户端 2.修改redis.conf文件 port 6379 //端口 daemonize yes cluster-enabled yes //打开集群 cluster-config ...

  8. 2019HECTF总结_web题

    奇怪的编码 ♭|§∮♯♭|§∮♬♭|§§♫♭|§∮§♭|§♩§♭|♯♬¶♭|§§♫♭|§§¶♭|♯¶§♭|♯¶♫♭|§∮♭♭|§§♫♭|§§♬♭|♯♬♪♭|♯¶♪♭|♯¶|♭|♯¶♯♭|♯♬♬♭|♯♬ ...

  9. Effective python(五):内置模块

    1,考虑使用contextlib和with语句改写可复用的try/finally代码 with lock:print('lock is held')相当于try:print('lock is held ...

  10. C语言学生管理系统

    想练习一下链表,所以就有了这个用C写的学生管理系统 没有把它写入文件,才不是因为我懒哈哈哈,主要是为了练习链表的 #include<stdio.h> #include<stdlib. ...