Tornado框架02-模板引擎

Tornado框架中, 模板引擎能带来为咱很多好,
它是方便展现页面的极度佳方式.
在达成同节省吃我们介绍了模版引擎对于{{}}跟对此 {%%}的之所以法.
我们大概回顾一下:

巴基斯坦同中国关系变化分为两单等级,中国刚刚建国时,巴国净运动亲美路线,与华涉嫌并无是深好,但是呢并未死酷,巴国直接在迟疑的摇晃中。60年间,巴国亲眼目睹了中华是怎以“数万边防军”即痛击印度之,就这产生变更。 
  70年间,在其次软印巴的战以后,美国首先单废弃了让外称作“亚洲太好的恋人”的巴基斯坦。为了拉拢当时投报在前头苏联怀抱的印度,美国军方为各种名义拖延、暂扣了应有很快提交巴基斯坦的武器装备,而印度赎了许许多多前方苏联之红旗战斗机,彻底把巴基斯坦战败,取得了制空权。此时巴基斯坦其实已改为了“世界孤儿”,巴国一个内阁资深人士对总理说:“我们早就被世界所抛弃”。 
  
   这对此印度以来简直是“天下掉下的林妹妹”的好事。东巴最终被迫独力,眼看印度吞并巴基斯坦曾变成可能,巴国片的抵抗力量从空战开始就是让印度搞垮了。 
    但是就算于印度召开着“分裂东巴,收复巴国”美梦之际,一个贫寒而很充分之国家突然站在了巴基斯坦悄悄,巴国之所以开始同中华添密切来往。从过去的“美国天堂关系平台”转换为华一个自己国家,获得了炎黄制作的“歼6、7”战斗机,特别是歼7战斗机上巴基斯坦然后。使得猖狂的印度空军接连吃了重大损失。 
    巴国就算这个直接把歼7作为“守卫京城上空的警卫”来对,绰号也“空中哨兵”。而这并附着国内部开始同集翻天覆地的“大自省”行动,新阁上台,就改变原来的一方面倒美的策略,转向投入中国含。 
    巴国政治家的座右铭:任何时刻要相信了美国齐名选择了给撇下。在巴国剖析面临,中国对比西方对巴国极其可怜之优越性是“中国大凡共领导的国度”,是一个传袭制度之国家,可以巩固坚持至少50-100年以上的外交策略,不同于美国几更换一个管就见面并发新的权衡朋友之规范。这对巴基斯坦恰恰太重要了。 
    80年间中国起走单边亲美政策,而针对巴国之政态势呢具有转。从往大如胶似漆无间,到了小发毛病。但是巴国还是坚持团结的方针政策。 
    前苏联犯阿富汗随后,巴国感到挺乱,毕竟苏联红军不可一世,因此巴国暨中华提到更严密。而美国此刻刚好需要负中国来遏制前苏联。巴国毫不犹豫建立了平长条通往阿富汗相当抗军的道,美国出钱、中国供武器、巴国荷运输及抵抗者手里,最终造成了面前苏联吞并阿富汗计划彻底破产。 
  
      巴国立无授予直接回复,而美国虽因默许形式开始针对巴国发售F16歼击机计划。当联大决定针对国实施制裁性投票之际,巴国赫然站起(虽然回老家小但是仍然铿锵)高声回答:“我们坚决不予制裁中国,这是不要理由的过问国家主权”,这就是联大制裁中国题材议案的率先摆反对票。结果巴国迎来了美国风暴般的人马、经济、外交制裁。 
    不久晚巴国军事政变军政府登场。虽然转了过多,但是只是一样东西巴国军政府没有其它改变反而加强,那就算是对华关系走向。在此间我顺手提起远在北美之神州情侣古巴,他为是投了反对票的,随后而发起召开世界不结盟运动48国大会,以压倒性的绝对优势通过了一个唱对台戏联合国干涉中国内政的议案。 
    此外巴国以武装及跟中国协作更加紧密。中国研制的红箭8型导弹刚出道之际,几乎没市场,巴国则是率先成为批采购,并在那境内开了生欧美11国到的所谓“试验发射”,红箭8虽以此名声鹊起,巴国决定在华学者协助下大力仿制,以替代他首“陶1”导弹,起名“绿剑”(不是口香糖)。并且经过美国支持,秘密销售被南斯拉夫独立派,打击南联盟政府军,取得了超过“催格尔”的好成绩。 
  
  巴国具备与法国不利的涉嫌。90年代中前期,由于欧洲军火禁运正在火头上,希拉克也无敢当众对华出售武器。但是此时台独日益膨大,中国给东海“有海无军”的面,迫切希望更换同栽新颖潜艇,中国开班与法国商量打算引进法国阿格斯塔B潜艇技术。 
    巴国先是在中华之前市了3只阿格斯塔B潜艇,其中1条被神秘开为中国,供给中国“帮助其研究维修计划”。于是,1996、97年接连2年内,中国连接开了宋级1、2个别只型号,在平年下水。1型吧独立设计,带有阶梯形式之望楼;2型外观几乎和法国阿格斯塔B相同,就是当今之宋级改型。1型量生好少,2型则是为每年3-4艘速度修建到今天。(此资料吧美国情报局宣称,法国不予,巴基斯坦从不吭声。) 
  
    中巴联合研制L8教练机,巴国不惜重金参与研制,但L8销量并不是太好,而巴国对这个并未呀怨言。中巴联合研制新型坦克,其车体基础就是是叫中国陆军淘汰掉的T85IIMP,而原先于泰国传到的居多不便利T85II的亲闻,巴国如同没有听到! 
    21世纪中国10年前答应的新式战斗机枭龙终于飞起了,就于巴国举国欢庆之际,印度采用武器合约企图迫使俄罗斯中断供给枭龙战斗机发动机。而巴国对是毫无艺术,只能管想寄托于他以为“最足相信”的国中国。果然,中国因而了重重措施解除了俄罗斯范围,并且把克里莫夫公司引入了炎黄。印度耗资约78亿美元购得之俄罗斯大宗“二手货”合同协议最后没阻挡住中巴合作,反而为俄罗斯甩了同样拿。 
    中国主持人到看巴国,该国总理为极其盛大庆典率领政府组织前失去机场恭候。竟然从起了“6星红旗”,印度媒体对这评价说,“巴国军政府在售卖巴国”。而中华主持人则与了巴国“4吓邻国”的高度评价。 
    此外军政府出台之后,增加了广大资讯管束的内容。在巴国禁止为“台湾与华夏”或者“北京与台北”等所谓擦边球辞令来报道,他们依然故我以说“中国台湾省”。而自的几乎各类新闻记者朋友2006年、2007年个别至看巴国,因为那里曾出现了几不行武装分子袭击中国工地事件。此后,凡是由中华当好的工程项目,都加了系列的配备士兵。几乎超过了部护卫。在巴国公车达,如果你是中华人口,你晤面感到什么是“朋友”、“4好邻国”?你可以参观很多设置起禁区的设备,而如是西方人即便可能会见被拒绝。这是2006年英国泰晤士时报的均等首报道。 
    在此间我还要比方说说咱们协调。一个巴国传媒记者简报了外于华的眼界,引起了巴国群众之很要命遗憾。我们有的地方的外事口,始终把巴国当做一个完完全全叫花子的国,北京、上海等于老城市之外事服务区内,总是把巴国人数与印度看作一起,引起了充分非常遗憾。(这二者还是那个好辨认)。2006年,中国一样各项西南报社记者在内参中报道了华夏西南部地区部分边疆公路的司机,看到巴国人大保管稍微包往家购进东西,就无须客气把他们等到下车,嘴里还谩骂不停歇,此事后来中青报也上了。据称目前犹收获了改进。
    这些工作巴国政府目前对内封锁,不准自己的我国公民知情。但是几乎各类“喝了洋墨水”的尖端中国人口以那边办的啊小报就要把此事泄露给巴国口,还宣称最好你转移及中华夺。巴国政府则抄了这些小报。但是她们从没艺术处理那些“中国人数”,只得递解出境。 
  
    从大面说咱政府足以说对得由朋友。但是由零碎说,我们的全员真的有些不晓得究竟哪个是恋人?到底何许人也看得从而!我不是协调骂自己。但是咱有人口就是这么,别人更加瞧不起我们,我们也只要拿热脸偏偏往家冷屁股及贴,反而对那些真心热爱我们的,却深受跟讽刺。巴国国民总数不足中国1/3,我们今天开罪几十万,觉得没有啥,明天更开罪几十万,也觉得无啥~~巴国国民究竟生几个几十万,够我们开罪多少天的? 
    再提问问!中国以国际舞台上朋友居多呢?1989年联合国大会,全世界都在牵制中国,这可是大凡美国于那里轻微抖抖手的结果。而我们往底爱侣莫是种怯得不敢讲话,就是用了昧心的美元。只来2独真的冤家说了句公道话,随后就中了美国制。但是那时我们会予以他们啊?钱?还是先进得不行了之铁?还是别的啊?几乎什么吧尚未。但是信念留在巴国同古巴心中,他们或坚信中国会晤发出隆起的同一天。 
    老实说咱俩以这个国际舞台上,没多余几单虔诚的意中人了,祖宗留下的“红色国际”老本我们已经快赔的大都了。再未扭转。我们确实要改成“孤家寡人”吗?会过头去拉拢那些像朝鲜、越南这样的“亲密战友”吗? 
  
  巴基斯坦凡是这样援助中国之,为了节约运输机的空间,多载些救灾物质,随队之医疗队拆了座椅,以这样的架子飞往中国救灾…
… 
  “我大告诉我,当世界都抛我们的当儿,中国丁管极好之东西好未用,送给我们,我们才输了侵略者,我甘愿资助一切,愿意失去救人!”得知中国发地震后,一位巴基斯坦网友形容下了这样的留言。而类似之表态,这些天在巴基斯坦人数饱受连无少见。 
  
    “中国兄弟用什么东西,我们尽管提供什么事物。”地震发生两上后,巴基斯坦管穆沙拉夫就亲临中国驻巴大使馆,向神州人民表示近慰问。穆沙拉夫说,两年前巴基斯坦吃南亚大震袭击后,中国底助令巴基斯坦公民“记忆犹新”。 
    这个以“中国是巴基斯坦之雷打不动盟友”写以小学教材上的国家,这同潮几乎倾尽所有。
5月16日早上,两劫持C-130运输机从拉瓦尔品第的空军基地升空,满载价值约90万美元之抢救物资飞赴中国。同一天,巴基斯坦红十字向中国红十字会捐款5万美元。 
    巴基斯坦全员生活并无松,却于第一时间慷慨解囊,这在巴红新月会代理主席哈尼夫看来并无飞:“为华兄弟,巴基斯坦政府同国民发出再不行之艰难为使帮忙!”5月27日,由28名为巴基斯坦白衣战士以及赞助治疗人员组成的医疗队,抵达中国。 
    为釜底抽薪灾民临时居留问题,从5月19日及22日,中国外交部发言人连续三不善呼吁国际社会帮扶帐篷。获悉这同音继,巴基斯坦政府迅速行动,连续朝华地震灾区送帐篷。细心的华夏人发现,巴捐助中国的帐篷数量精确到了十位数,达到22260顶,而于分批运送时,甚至精确到了单位数。原因是,巴基斯坦这次以了江山战略储备的有帐篷! 
    巴基斯坦丁的哥们儿情谊,令众多华夏总人口感动不停。“我还会说啊,一个国家能够好把储备的备帐篷捐受中国,这曾经超过了友谊。”“怪不得大家常常说巴基斯坦大凡弟兄,说其实的,很多兄弟都举行不至就或多或少。” 
  国际事务中,难来如此根深蒂固情谊,绝大多数凡是益处当头! 
  这次抗震救灾,巴国输22000届帐篷,还有救灾物质,可以找相关报道———–为协中国地震灾区
巴基斯坦搬光国内战备帐篷 
  你们看了发啊感觉吗.? 
  请中华人. 看到巴国人..伸出你们友善的右手..握住他们平友善的手. 
  不呢别的..为了这许多真兄弟 希望大家看罢还能够顶一下!有你的支撑
才见面有重复多的人头了解及真实的东西!

**{{}}使用: **

  • 直获得服务端在render()函数中传送参数的值,
    例如服务端着生出self.render('index.html', contents=CONTENTS_LIST),
    html文本中生出{{contents}}
    则表示于html中取服务端的CONTENTS_LIST的内容
  • 咱由此安排'ui_methods': 需要执行的自定义python模块,之后,
    我们得于html文本中经过{{自定义python模块中的函数名()}}来实施相应的函数取得该函数之归结果因为这来显示

**{%%}的使用: **

  • {%for tmp in iterable%} 用于循环语句子, 注意要添加{%end%}央语句
  • {%if condition%} 用于规范判断, 同样同齐急需收尾语句
  • 通过安排ui_modules : 需要执行的python模块 之后,
    我们得以于文件被经过{%module python模块名()%}来一直实施该模块中对应的道,
    注意该模块需要连续tornado.web.UIModule

上述生非知底的请参考上亦然篇博客(Tornado框架01-入门总概)中之有血有肉实例实现后重新针对许说明来了解

联网下去我们老, 先使用一下模板引擎的接续之后, 再详尽介绍

路目录

**home.py文本如下: **

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import tornado.web


class IndexHandle(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.render("extend/index.html")


class AccountHandle(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.render("extend/account.html")

**acount.html文本如下: **

{%extends "../template/master.html"%}

<!--自定义css具体内容-->
{%block tm_css%}
    <style type="text/css">
        .page-content{
            background-color: green;
        }
    </style>
{%end%}

<!--#自定义的文本内容-->
{%block tm_content%}
    <h1>This is Account</h1>
{%end%}

<!--#自定义的js文件-->
{%block tm_js%}
    <script type="text/javascript">
        console.log('This is Account')
    </script>
{%end%}

**index.html文件如下: **

{%extends "../template/master.html"%}

<!--对应的自定义css的具体内容-->
{%block tm_css%}
    <style type="text/css">
        .page-content{
            background-color: yellow;
        }
    </style>
{%end%}

<!--自定义的文本内容-->
{%block tm_content%}
    <h1>This is Index</h1>
{%end%}

<!--自定义的js文件-->
{%block tm_js%}
    <script type="text/javascript">
        console.log('This is Index')
    </script>
{%end%}

**master.html文本如下: **

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Master</title>
    <style type="text/css">
        * {
            margin: 0px;
            padding: 0px;
        }
        .page-header{
            height: 50px;
            background-color: red;
        }
        .page-content {
            height: 200px;
            background-color: azure;
        }
        .page-footer{
            height: 50px;
            background-color: black;
        }
    </style>

    <!--为后边自定义的css命名并占位置-->
    {%block tm_css%}{%end%}
</head>
<body>
    <div class="page-header"></div>
    <div class="page-content">
        <!--自定义的内容, 命名并占位-->
        {%block tm_content%}{%end%}
    </div>
    <div class="page-footer"></div>

    <!--自定义的js文件位置-->
    {%block tm_js%}{%end%}
</body>
</html>

**start.py文本如下: **

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import tornado.web, tornado.ioloop
from controllers import home

if __name__ == '__main__':
    CONTENTS_LIST = []
    settings = {
        'template_path': 'views',

    }

    application = tornado.web.Application([
        (r"/index", home.IndexHandle),
        (r"/account", home.AccountHandle),
    ], **settings)

    application.listen(80)
    tornado.ioloop.IOLoop.instance().start()

访问`index`运作结果

访问`account`运作结果

  • 自打运行结果来拘禁, 两只网页的基本点结构同样, 只是其中包含的css切切实实样式,
    具体内容以及js文件不同
  • 只要累模板文件来行使我们只要以此时此刻文件首行写上{%extends "../template/master.html"%}
    ,起名 这里代表即文件为master.html来进行渲染

{%block tm_css%}
<style type=”text/css”>
.page-content{
background-color: yellow;
}
</style>
{%end%}“`
index.html的马上有其实就算是master.htmltm_css的具体内容

  • master.html文件中{%block tm_css%}{%end%}一定与为后面具体而描写副的情做一个据为己有位符,
    并且起名为tm_css.

**利用模板的接轨可以重复使用相同结构的模版, 可以大大减少代码量.
但是有时并无是有的网页结构都是自家要的,
我们见面怀念使独立包含有网页都有些相同之同等稍一些内容.
此时尽管待模板文件之隐含来实现. **

文件目录

**咱当刚刚的路之views文本夹着进入一个include文件夹,
并且在拖欠公文夹着初构筑一个form.html文件. 内容如下: **

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

我们将index.html改如下: **

{%extends "../template/master.html"%}

<!--对应的自定义css的具体内容-->
{%block tm_css%}
    <style type="text/css">
        .page-content{
            background-color: yellow;
        }
    </style>
{%end%}

<!--自定义的文本内容-->
{%block tm_content%}
    <h1>This is Index</h1>
    {%include "../include/form.html"%}
    {%include "../include/form.html"%}
    {%include "../include/form.html"%}
{%end%}

<!--自定义的js文件-->
{%block tm_js%}
    <script type="text/javascript">
        console.log('This is Index')
    </script>
{%end%}

运作结果

  • 打图被扣有,
    我们于index.html中加上{%include "../include/form.html"%}事后,
    该公文就见面受含有到当下文件被执同样不行
  • 这种富含可以另行多次, 包含次则实施为含有的始末千篇一律蹩脚

此地又补充某些粗知识, Tornado的模板引擎默认了滤掉xss攻击,
当使用{%raw content%}时, content拿直当html情渲染,
不进行转义来避免xss攻击

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图