Tornado-0七、Tornado的ui_modules和ui_methods

1.ui_modules和ui_methods

第一步:新建文件uimethods.py ,這裏的文件名是隨意的只要在import時合法就行html

def methods1(self):  #注意這裏要加上self
    return  'ui_methods 1'

def methods2(self):
    return  'ui_methods 2'

新建文件uimodules.py,使用ui_modules須要繼承UIModule類web

from tornado.web import UIModule
class UiModule(UIModule):
    def render(self, *args, **kwargs):
        return '我是ui_module'

第二步:在項目中導入app

import util.uimethods
import util.uimodules

第三步:在application配置參數,值是導入的模塊名函數

ui_methods=util.uimethods,
ui_modules=util.uimodules,
#也能夠寫成字典的形式,其實在tornado內部就是解析成字典的形式
ui_modules={'UiModule':util.uimodules.UiModule},

class Calculation:
    def sum(self,a,b):
        return a+b

class UiHandler(tornado.web.RequestHandler):
    def fun(self):
        return 'hujing'

    def get(self):
        username = 'haha'
        self.render('module.html',
                    username=username,
                    fun=self.fun,
                    cal=Calculation
                    )

第四步:在HTML中調用,導入的ui_modules須要使用module語句調用tornado

<!--調用ui_modules-->
{% module UiModule() %}<br>
<br>
<!--調用ui_methodes-->
{{ methods1() }}

ui_modules和ui_methods提升了方法和類的複用性,能夠在全局使用。oop

最後只須要在須要的頁面添加以下代碼就行ui

{% module Advertisement() %}<br>

最後在模板還提供了一些其餘的功能url

set設置局部變量spa

<!--經過set設置局部變量-->
{% set su = Count().sum %}
{{ su(6,9) }} <br>

{% set args = Count().args %}
{% for a in args(1,2,3,4,5) %}
    {{ a }}<br>
{% end %}

使用apply語句,使用函數的做用範圍到最近的{%end%}爲止debug

{% apply upper %}
    hello world<br>
    hahaha
{% end %}
{{ upper('hahaha') }} <br>

linkify生成一個連接

{{ linkify('百度: http://www.baidu.com') }} <br>
{%raw linkify('百度: http://www.baidu.com') %}

圖片描述


2.附錄


module.html

<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Module</title>
    </head>
    <body>
        {{ username }}<br>
    
        {{ fun() }}<br>
    
        {{ cal().sum(6,9) }}<br>
    
        {% import time %}
        {{ time.time() }}<br>
    
        {% from util.mode_file import sub,upper,Count %}
    
        {{ sub(5,3) }}<br>
    
        {{ upper('wenmang') }}<br>
    
        {{ Count().url }}<br>
        {% raw Count().url %}<br>
    
        {{ Count().sum(6,9) }}<br>
        {{ Count.sum(6,9) }}<br>
    
        {{ Count().args(1,2,3,4) }}<br>
    
        {{ methods1() }}<br>
    
        {% module UiModule() %}<br>
    
        <!--經過set設置局部變量-->
        {% set su = Count().sum %}
        {{ su(6,9)}}
    
        {% set args = Count().args %}
        {% for a in args(1,2,3,4,5)%}
            {{ a }}<br>
        {% end %}
    
        {% apply upper %}
            <br>
            ren hao e  <br>
            xieyulong bu e
        {% end %}
        <br>
        {{ upper('hahaha') }}
    
        <br>
        {{ linkify('百度:http://www.baidu.com') }} <br>
        {% raw linkify('百度:http://www.baidu.com') %} <br>
    </body>
    </html>

uimodules.py

from tornado.web import UIModule
    
    class UiModule(UIModule):
        def render(self, *args, **kwargs):
            return '我是 ui_module'

uimethods.py

def methods1(self):
    return 'ui_methods1'

def methods2(self):
    return 'ui_methods2'

start1.py

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web

import util.uimodules
import util.uimethod

from tornado.options import define,options

define('port',default=9000,help='run port',type=int)

class Calculation:
    def sum(self,a,b):
        return a+b

class UiHandler(tornado.web.RequestHandler):
    def fun(self):
        return 'hujing'

    def get(self):
        username = 'haha'
        self.render('module.html',
                    username=username,
                    fun=self.fun,
                    cal=Calculation
                    )


if __name__ == '__main__':
    tornado.options.parse_command_line()

app = tornado.web.Application(
    handlers=[
        (r'/ui',UiHandler),
    ],
    template_path='templates',
    static_path='static',
    ui_methods=util.uimethod,
    ui_modules=util.uimodules,
    # ui_modules={'UiModule':util.uimodules.UiModule},
    debug=True,
)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()

圖片描述

相關文章
相關標籤/搜索