zoukankan      html  css  js  c++  java
  • web框架--tornado框架之模板引擎继承

    使用模板的继承可以重复使用相同结构的模板, 可以大大减少代码量

    入门实例

    一、demo目录结构

    注解:

    master.html为模板内容,被index.html,account.html引用

    二、各文件代码

    2.1、master.html

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Master</title>
     6     <style>
     7         *{
     8             margin: 0;
     9             padding: 0;
    10         }
    11         .page-header{
    12             height: 48px;
    13             background-color: aqua;
    14         }
    15         .page-content{
    16             height: 300px;
    17             background-color: bisque;
    18         }
    19         .page-footer{
    20             height: 30px;
    21             background-color: aqua;
    22         }
    23     </style>
    24 
    25 </head>
    26 <body>
    27     <div class="page-header"></div>
    28     <div class="page-content">
    29 <!--        自定义的内容,命名并占位-->
    30         {% block tm_content %}
    31         {% end %}
    32     </div>
    33     <div class="page-footer"></div>
    34 <!--    自定义的js文件位置,命名并点位-->
    35     {% block tm_js %}
    36     {% end %}
    37 
    38 <!--    自定义css,命名并占位-->
    39     {% block tm_css %}
    40     {% end %}
    41 </body>
    42 </html>

    2.2、form.html

    <form>
        <input type="text"/>
        <input type="submit" value="提交"/>
    </form>

    2.3、account.html

     1 {% extends "../template/master.html" %}
     2 
     3 <!--自定义css具体内容-->
     4 {% block tm_css %}
     5     <script type="text/css">
     6         .page-content{
     7             background-color: aliceblue;
     8             font-size: 20px;
     9         }
    10     </script>
    11 {% end %}
    12 
    13 <!--自定义page-content中的内容-->
    14 {% block tm_content %}
    15     <p>这是我的account</p>
    16 {% end %}
    17 
    18 <!--自定义js文件-->
    19 {% block tm_js %}
    20     <script type="text/javascript">
    21         console.log("这是我的account")
    22     </script>
    23 {% end %}

    2.4、index.html

    {% extends "../template/master.html"%}
    
    <!--对应的自定义css具体内容-->
    {% block tm_css %}
        <style type="text/css">
            .page-content{
                background-color: cornflowerblue;
            }
        </style>
    {% end %}
    
    <!--自定义page-content的内容-->
    {% block tm_content %}
        <p>这是系统的首页</p>
        {%include "../include/form.html" %}
        {%include "../include/form.html" %}
    {% end %}
    
    <!--自定义js的内容-->
    {% block tm_js %}
        <script type="text/javascript">
            console.log("这是系统的首页")
        </script>
    {% end %}

    2.5、start.py

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 # @Time    : 2019/12/5 23:41
     4 # @Author  : yusheng_liang
     5 # @Site    : 
     6 # @File    : start.py
     7 import tornado.web
     8 import tornado.ioloop
     9 
    10 class IndexHandle(tornado.web.RequestHandler):
    11     def get(self, *args, **kwargs):
    12         self.render("extend/index.html")
    13 
    14 class AccountHandle(tornado.web.RequestHandler):
    15     def get(self, *args, **kwargs):
    16         self.render("extend/account.html")
    17 
    18 if __name__ == "__main__":
    19     CONTENTS_LIST = []
    20     settings = {
    21         'template_path': 'views',
    22     }
    23 
    24     application = tornado.web.Application([
    25         (r"/index", IndexHandle),
    26         (r"/account", AccountHandle),
    27     ], **settings)
    28 
    29     application.listen(80)
    30     tornado.ioloop.IOLoop.instance().start()

    三、demo效果示例

    3.1、http://127.0.0.1/index

    3.2、http://127.0.0.1/account

    详解分析

    • 从运行结果来看, 两个网页的主体结构相同, 只是里边包含的css具体样式, 具体内容以及js文件不同
    • 要继承模板文件来使用我们要在当前文件首行写上{%extends "../template/master.html"%} , 这里表示当前文件以master.html来进行渲染
    • master.html文件中{%block tm_css%}{%end%}相当与为后面具体要写入的内容做一个占位符, 并且起名为tm_css
  • 相关阅读:
    mysql 历史版本下载
    mysql 5.7 版本 You must reset your password using ALTER USER statement before executing this statement报错处理
    5.7 zip 版本的安装 以及遇到的坑
    mysql 5.6zip版本的卸载与5.7 zip 版本的安装
    mysql数据库的备份与还原
    本地Navicat连接docker里的mysql
    docker修改数据库密码
    docker 在push镜像到本地registry出现的500 Internal Server Error
    linux 没有界面内容显示不全解决办法
    json与map互相转换
  • 原文地址:https://www.cnblogs.com/june-L/p/11992903.html
Copyright © 2011-2022 走看看