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

原文地址:https://www.cnblogs.com/june-L/p/11992903.html

时间: 2024-10-07 19:13:01

web框架--tornado框架之模板引擎继承的相关文章

web框架--tornado框架之模板引擎

使用Tornado实现一个简陋的任务表功能demo来讲解tornado框架模板引擎 一.demo目录结构 二.具体文件内容 2.1.commons.css .body{ margin: 0; background-color: bisque; } 2.2.index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title

Tornado框架配置使用Jinja2模板引擎

安装jinja2包 pip install jinja2 定义继承tornado.web.RequestHandler的子类BaseHandler.如果请求处理类继承这个类将会使用jinja模板引擎:如果请求处理类继承tornado.web.RequestHandler,则会使用Tornado框架的模板引擎. 1 import os 2 3 from jinja2 import Environment, FileSystemLoader, TemplateNotFound 4 from torn

laravel框架总结(二) -- blade模板引擎

## 1.基本用法 ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div> //输出结果是 larave5 larave5 ##情形2 $name = laravel5 并且使用@的情形 <div class="title"> {{$name}} @{{$name}}</div> //输出结果是 larave5{{$name}} ##情形

web框架--tornado框架之初识

一.初识tornado 对于Web框架来说,一般分为两类,其中一类则是包含上述 4部分 内容的框架,另外一类就是只包含 第3部分 功能的框架.tornado就是一中属于前者的框架.tornado 是一个基于 Python 开发的web框架,较其他 Web 框架的区别是:采用了非阻塞的方式和对epoll的应用.这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架. 经典的hello world 案例:tornado内部已经帮我们实现socket. 1 #!/usr/bin

Laravel 模板引擎Blade中标签详细介绍

这篇文章主要介绍了Laravel模板引擎Blade中section的一些标签的区别介绍,需要的朋友可以来看看. Laravel 框架中的Blade模板引擎很好用,但是官方文档介绍的并不详细,我接下来将详细的介绍下: @yield与@section 首先,@yield是不可拓展的,如果你要定义的部分没有默认内容让子模版扩展,那么用@yield($name,$default)的形式会比较方便,如果你在子模版中并没有指定这个区块的内容,它就会显示默认内容,如果定义了,就会显示你定义的内容. 与之比较,

Laravel模板引擎Blade中section的一些标签的区别介绍

Laravel 框架中的 Blade 模板引擎,很好用,但是在官方文档中有关 Blade 的介绍并不详细,有些东西没有写出来,而有些则是没有说清楚.比如,使用中可能会遇到这样的问题: [email protected] 和 @section 都可以预定义可替代的区块,这两者有什么区别呢?[email protected] 可以用 @show, @stop, @overwrite 以及 @append 来结束,这三者又有什么区别呢? 本文试对这些问题做一个比较浅显但是直观的介绍. @yield 与

python的Web框架,模板标签及模板的继承

模板标签 在传递数据的时候,会有大量的数据展示在浏览器上,而数据会是动态变化的,在html的编写中,数据也是需要动态的,而不能是写死的,如果动态展示呢. 给定的例子数据 views传递数据给html 1 from django.shortcuts import render 2 3 def index(request): 4 5 students = [ 6 {'id':12, 'name':'张三', 'age':19, 'sex':'男'} 7 {'id':22, 'name':'李思',

Javascript库,前端框架(UI框架),模板引擎

JavaScript库:JQuery,undoscore,Zepto 纯Javascript语言封装, 前端框架(UI框架):Bootstrap,Foundation,Semantic UI,Pure.css 前端框架.UI框架,或者叫UI模板 HTML + CSS + (JavaScript)? 模板引擎: 叫HTML模板引擎?  模板文件(HTML)+(CSS)?+数据(JSON) =输入=> 模板引擎  =输出=>HTML (客户端)前端模板引擎(渲染),(服务器)后端模板引擎(渲染)

第二篇:Python高性能Web框架tornado源码剖析之待请求阶段

上篇<第一篇:Python高性能Web框架Tornado原理剖析>用上帝视角多整个框架做了一个概述,同时也看清了web框架的的本质,下面我们从tornado程序的起始来分析其源码. 概述 上图是tornado程序启动以及接收到客户端请求后的整个过程,对于整个过程可以分为两大部分: 启动程序阶段,又称为待请求阶段(上图1.2所有系列和3.0) 接收并处理客户端请求阶段(上图3系列) 简而言之: 1.在启动程序阶段,第一步,获取配置文件然后生成url映射(即:一个url对应一个XXRequestH