• 第二百六十节,Tornado框架-内置模板方法


    Tornado框架-内置模板方法

    直接在html文件使用,不需要传值

    Tornado默认提供的这些功能其实本质上就是 UIMethod 和 UIModule,也就是Tornado框架定义好的html文件可调用函数及字段,直接在html文件调用即可

    在模板中默认提供了一些函数、字段、类以供模板使用:

    转义功能
    escape: tornado.escape.xhtml_escape 的別名
    xhtml_escape: tornado.escape.xhtml_escape 的別名
    url_escape: tornado.escape.url_escape 的別名

    json处理
    json_encode: tornado.escape.json_encode 的別名

    squeeze: tornado.escape.squeeze 的別名

    生成a标签
    linkify: tornado.escape.linkify 的別名

    就是python的datetime模块
    datetime: Python 的 datetime 模组

    handler: 当前的 RequestHandler 对象

    注意一下handler代指的RequestHandler逻辑处理对象也就是self

    封装的request信息,包含用户访问的请求信息
    request: handler.request 的別名

     框架引擎不用传参,html直接调用即可

    #!/usr/bin/env python
    #coding:utf-8
    
    import tornado.ioloop
    import tornado.web                              #导入tornado模块下的web文件
    import uimodule
    
    #逻辑处理
    class MainHandler(tornado.web.RequestHandler):  #定义一个类,继承tornado.web下的RequestHandler类
        def get(self):                                              #get()方法,接收get方式请求
            self.render("cshi.html")                                #显示cshi.html文件,传值到模板语言里渲染
    
    settings = {                                    #html文件归类配置,设置一个字典
        "template_path":"template",                 #键为template_path固定的,值为要存放HTML的文件夹名称
        "static_path":"static",                     #键为static_path固定的,值为要存放js和css的文件夹名称
        'ui_modules':uimodule,                     #配置html文件函数调用模块
    }
    
    #路由映射
    application = tornado.web.Application([         #创建一个变量等于tornado.web下的Application方法
        (r"/index", MainHandler),                   #判断用户请求路径后缀是否匹配字符串index,如果匹配执行MainHandler方法
    ],**settings)                                   #将html文件归类配置字典,写在路由映射的第二个参数里
    
    if __name__ == "__main__":
        #内部socket运行起来
        application.listen(8888)                    #设置端口
        tornado.ioloop.IOLoop.instance().start()

    html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--注意js和css文件路径配置后必须在引入路径里加上配置文件夹名称-->
        <link rel="stylesheet" href="static/s1.css">
    </head>
    <body>
    <p>{{request}}</p>
    <h1></h1>
    
    </body>
    </html>

    current_user: handler.current_user 的別名
    locale: handler.locale 的別名
    _: handler.locale.translate 的別名

    这个最常用【重要】,在html页面调用可以自动识别逻辑处理配置的静态文件路径如css和js,并且将静态文件缓存到用户本地,连接地址将转换成静态文件的md5值
    static_url: for handler.static_url 的別名

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href='{{static_url("s1.css")}}'>
    </head>
    <body>
    <h1>测试</h1>
    
    </body>
    </html>

    可以防止跨站伪造,后面会讲到
    xsrf_form_html: handler.xsrf_form_html 的別名

    模板方法了解一下即可,大多数还是我们使用自己的自定义UIMethod 或 UIModule

  • 相关阅读:
    一周之内了解一个行业的方法
    du命令 实现Linux 某个文件夹下的文件按大小排序
    蝴蝶效应、青蛙现象、鳄鱼法则、鲇鱼效应.......
    MYSQ提高L查询效率的策略总结
    12个高矮不同的人,排成两排(catalan数)
    四人过桥、三盏灯 三个开关 的答案
    给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
    一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。
    二分检索(查找)的各种变种
    排序算法稳定性
  • 原文地址:https://www.cnblogs.com/adc8868/p/6857766.html
Copyright © 2020-2023  润新知