tornado框架基础05-模板继承UImodul和UImethods

Posted winfun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tornado框架基础05-模板继承UImodul和UImethods相关的知识,希望对你有一定的参考价值。

01 模板继承

父模板?

<html lang="en">

<head>
    <meta charset="UTF-8">?

    <link rel="shortcut icon" href=" static_url(‘images/favicon.ico‘)"> </head>

<body>

% block body %

    this is tornado

% end %

</body>

</html>

子模板

% extends ./03base.html %

% block title %Extend% end %

% block body %

    % if username!=‘no‘ %

        欢迎用户 username 登录

               

            % else %

        您还没有登录

    % end %

% end %

 

 

extend

% extend filename %继承模板,在子模板中会把父模板的所有内容都继承到子模板中,减少大量重复代码

block

% block name %...% end %

被词语句包裹的代码块在子模板中可以被重写,覆盖父模板中的

模板导入

模板文件

this is tornado templates include 子模板

% include ./05include.html %

include

% include filename%

include 可以导入一些其他的模板文件,一般使用 include 的时候,模板文件中不使用 block 块

继承

extend 可以继承父模板,从而节省了大量重复代码,同时也为修改带来了极大的方便,但是需要注意的是一定只能单继承,一个模板只能继承一个模板

block 包裹一部分代码块,可以在子模板中重写块中的内容

导入模板文件

include 可以导入模板文件,但是导入的模板中不要再出现 extend 和 block

02 函数和类导入

渲染时导入

在 Handler 中渲染模板时传入

将函数写在handler里面.

示例

def haha(self):

    return ‘this is hahaha‘

class Calculation:

    def sum(self, a, b):

        return a+b

传入

self.render(‘04extend.html‘,

            haha=self.haha,

            cal=Calculation

            )

haha()

Calculation().sum(5.5.)

模板中直接导入

在模板中也可以直接导入 python 模块

导入内置模块

% import time %

time.ctime()

 

导入自定义模块

% from mod_file import add, upper, Calculation % add(5, 6)

注意路径问题:python解释器查找 mod_file 时是根据 py 文件的路径来查找的,不是根据模板的路径来查找

03 ui_methods ui_modules

第一步

新建文件ui_methods.py

新建文件ui_methods.py ,这里的文件名是随意的只要在import时合法即可,这里可以新建一个文件夹,如util,来放置 ui_methods.py 和 ui_modules.py

def methods1(self): #注意这里要加上self

  return ‘ui_methods 1‘

def methods2(self):

  return ‘ui_methods 2‘

新建文件ui_modules.py

新建文件ui_modules.py,使用ui_modules需要继承UIModule类

from tornado.web import UIModule

class UiModule(UIModule):

    def render(self, *args, **kwargs):

        return ‘我是 ui_module‘

第二步

在项目主文件中导入

import util.ui_modules

import util.ui_methods

导入类要加module:

module TestModule

导入方法加methods:

methods func()

第三步

配置 Application 参数

ui_methods=util.ui_methods,

ui_modules=util.ui_modules,

也可以写成字典形式:

ui_modules=

‘UiModule‘:util.ui_modules.UiModule,

第四步

在模板中调用

% module UiModule() %

methods1()

 

刚才的这种方式,虽然烦琐了一点,但是在调用的时候十分简单,在越是有很多模板需要导入同一个对象的时候,就越显得其方便简洁,接下来演示个具体的案例

添加 ui_module

在 ui_modules 中添加如下代码

class Advertisement(UIModule):

    def render(self, *args, **kwargs):

        return self.render_string(‘06ad.html‘)

    def css_files(self):

        return "/static/css/King_Chance_Layer7.css"

    def javascript_files(self):

        return [

            "/static/js/jquery_1_7.js",

            "/static/js/King_Chance_Layer.js",

            "/static/js/King_layer_test.js",

        ]

导入静态文件

导入给大家准备好的静态文件

模板中使用

% module Advertisement() %

04 模板其他命令

apply

% apply upper %

    hello world     hahaha

% end %

upper(‘hahaha‘)

 

使用apply语句,使用函数的作用范围到最近的%end%为止

linkify

%raw linkify(‘百度: http://www.baidu.com‘) % linkify生成一个链接,但是要注意模板转义

以上是关于tornado框架基础05-模板继承UImodul和UImethods的主要内容,如果未能解决你的问题,请参考以下文章

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

自定义模板语言整合

第二章:表单和模板

模板继承和UImethodUImodules

tornado基础入门——简单了解tornado

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