• tornada-模板


    tornado模板

    1.配置模板路径 (project/config.py)

    # coding=utf-8
    import os
    BASE_DIRS = os.path.dirname(__file__)
    # 参数
    options = {
           “post” : 8000,  
    }
    # 配置
    settings = {
           "static_path" : os.path.join(BASE_DIRS,"static"),
           "template_path":os.path.join(BASE_DIRS,"templates"),
            "debug":True,
    }               

    2.配置URL路由(project/application.py)

    # coding = utf-8
    import tornado.web
    from views import views
    import config
    
    class Application(tornado.web.Application):
           def __init__(self):             
                 app = [
                        (r"/home",views.HomeHandler),
                  ]      
           super(Application, self).__init__(app, **config.settings)

    3.渲染并返回给客户端(project/views/views.py)

    # coding = utf-8
    # 视图
    
    from tornado.web import RequestHandler
    
    class HomeHandler(RequestHandler):
            def get(self, *args, **kwargs):
    temp = 100
    per = {"name" : "hello", "age":18} self.render(
    "home.html", num = temp, per = per)
    # 方法2
    self.render("home.html", num = temp, **per)

    4.变量与表达式(project/templates/home.html)

    • 语法
      • {{ var }}
      • {{ expression }}
    <html lang="en">
    <head>
          <meta charset="UTF-8">
           <title>主页</title>
    </head>
    <body>
          <h1>这里是home页面</h1>
          <h1>num: {{ num }}</h1>
    <h1>per["name"]</h1>
    <h1>{{name}}</h1> </body> </html>

    5.流程控制

    • if
      • {% if 表达式 %} ......{% elif  表达式 %} ......{% else %}..... {%end%}
    • for
      • {% for item in items %}  ......  {%end%}
    • while

    6.函数

    •  static_url
      • <link rel="stylesheet" href="{{ static_url('css/home.css') }}">
      • 优点1: 修改目录不需要修改URL
      • 优点2:创建了一个基于文件内容的hash值,并将其添加到URL末尾(当一个查询参数),这个hash值总能保证加载的是最新的文件,而不是以前的缓存版本。无论是开发阶段还是上线阶段都是很有必要的。
    • 自定义函数
      • # 把函数当参数传递
        class
        FuncHandler(RequestHandler): def get(self, *args, **kwargs): def mySum(n1,n2): return n1+n2 self.render(‘home.html’,mysum = mySum)

        # 在 home.html 中使用
        <h1>{{ mysum(100,99) }}</h1>

    7.转义

    • 作用
      • tornado默认开启了自动转义功能,能防止网址受到恶意攻击

    我们可以通过raw语句来输出不被转义的原始格式,如:

    {% raw text %}

    注意: 只能关闭一行;在Firefox浏览器中会直接弹出alert窗口,而在Chrome浏览器中,需要set_header("X-XSS-Protection", 0)

    若要关闭自动转义

    一种方法是在Application构造函数中传递autoescape=None

    另一种方法是在每页模板中修改自动转义行为,添加如下语句:

    {% autoescape None %}

    escape()

    关闭自动转义后,可以使用escape()函数来对特定变量进行转义,如:

    {{ escape(text) }}

     8.块

    我们可以使用块来复用模板,块语法如下:

    {% block block_name %} {% end %}

    而子模板index.html使用extends来使用父模板base.html,如下:

    {% extends "base.html" %}

     

    9.静态文件

    • static_path
      • "static_path":os.path.join(BASE_DIRS, "static")
    • StaticFileHandler  (静态文件)
      • 注意:放在所有的路由下面(在application.py中)
      • (r"/(.*)$", tornado.web.StaticFileHandler,{“path”:os.path.join(config.BASE_DIRS,"static/html"),
        "default_filename":"index.html"})
  • 相关阅读:
    最大子数组和问题的解
    【剑指Offer】46孩子们的游戏(圆圈中最后剩下的数)
    【剑指Offer】45扑克牌顺子
    【剑指Offer】44翻转单词顺序列
    【剑指Offer】43左旋转字符串
    【剑指Offer】42和为S的两个数字
    【剑指Offer】41和为S的连续正数序列
    【剑指Offer】40数组中只出现一次的数字
    【剑指Offer】39平衡二叉树
    【剑指Offer】38二叉树的深度
  • 原文地址:https://www.cnblogs.com/Mint-diary/p/9916074.html
Copyright © 2020-2023  润新知