• 模板继承和UImodul 和 UImethods


     模板继承和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传参等于导入的文件名
         1 from tornado.web import RequestHandler, Application
         2 from tornado.httpserver import HTTPServer
         3 from tornado.options import options, define
         4 from tornado.ioloop import IOLoop
         5 from util import uimethods, uimodules
         6 
         7 define('port', default=7981, type=int)
         8 
         9 
        10 class IndexHandle(RequestHandler):
        11     def get(self):
        12         self.render('index.html')
        13 
        14 
        15 application = Application(
        16     handlers=[
        17         (r'/', IndexHandle)
        18     ],
        19     template_path='templates',
        20     ui_methods=uimethods,
        21     ui_modules=uimodules
        22 )
        23 
        24 if __name__ == '__main__':
        25     options.parse_command_line()
        26     app = HTTPServer(application)
        27     app.listen(options.port)
        28     IOLoop.current().start()
      • ulmethods使用
        • def test(self): return 'test'
        • ulmethods里面的方法第一个参数必须为self
      • ulmodules使用
        • 1 from tornado.web import UIModule
          2 
          3 class TestModule(UIModule):
          4     def render(self, *args, **kwargs):
          5         return 'TestModule'

          先建的类必须继承自UIModule类,当该类实例化的时候,会自动执行render方法

        • 1 from tornado.web import UIModule
          2 
          3 class TestModule(UIModule):
          4     def render(self, *args, **kwargs):
          5         self.render_string('index.html')

          渲染页面

        •  1 from tornado.web import UIModule
           2 
           3 class TestModule(UIModule):
           4     def render(self, *args, **kwargs):
           5         self.render_string('index.html')
           6 
           7     def javascript_files(self):
           8         return 'your javascript_files path'
           9 
          10     def css_files(self):
          11         return 'your jcss_files path'

          静态资源加载,如果路径有多个,则返回列表形式

        •  1 <!DOCTYPE html>
           2 <html lang="en">
           3 <head>
           4     <meta charset="UTF-8">
           5     <title>Title</title>
           6 </head>
           7 <body>
           8 {% module TestModule() %}
           9 <br>
          10 {{ test() }}
          11 </body>
          12 </html>

          具体使用

    • 模板的其他命令
      • 1 def test(self): return 'test'
        2 
        3 
        4 
        5 def upper(self, text):
        6     if isinstance(text, str):
        7         return text.upper()
        8     raise TypeError

         在ulmethod里面定义一个upper方法

      •  1 <!DOCTYPE html>
         2 <html lang="en">
         3 <head>
         4     <meta charset="UTF-8">
         5     <title>Title</title>
         6 </head>
         7 <body>
         8     {{ upper('hello') }}
         9 </body>
        10 </html>

         使用该方法

      • 当传入的参数比较大的时候,这种方法显得不太美观
         1 <!DOCTYPE html>
         2 <html lang="en">
         3 <head>
         4     <meta charset="UTF-8">
         5     <title>Title</title>
         6 </head>
         7 <body>
         8     {% apply upper %}
         9         asdasdasddddddddd
        10     {% end %}
        11 </body>
        12 </html>

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

      •  1 <!DOCTYPE html>
         2 <html lang="en">
         3 <head>
         4     <meta charset="UTF-8">
         5     <title>Title</title>
         6 </head>
         7 <body>
         8     {{  linkify ('http://www.baidu.com') }}
         9     {% raw  linkify ('http://www.baidu.com')  %}
        10 </body>
        11 </html>

         linkify后接一个元祖,会自动识别元祖内的url,将其解析为a标签,但需要取消转译

  • 相关阅读:
    KNN算法
    从malloc中窥探Linux内存分配策略
    ECC校验原理以及在Nand Flash中的应用
    周大福、周六福、周生生等区分
    USB时钟为什么是48MHz
    NFS网络操作系统介绍以及相关应用
    办公技巧
    嵌入式设备中使用短信服务
    Android App测试要点
    Excel中 设置使得每行的颜色不一样
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/10813909.html
Copyright © 2020-2023  润新知