zoukankan      html  css  js  c++  java
  • tornado 05 模块继承

    tornado 05 模块继承

    一、模板继承

    #问题:在浏览网页的时候,很多页面上很多部分其实是重复的,那这些部分在每个页面都去写一次吗?
    #不是,这只不过是通过继承实现的
    #模板继承
    
    #在字模板中写上 {% extends ./lesson05_base.html %} 就可以继承父模板的所有内容了 
    #子模板内容修改 
    
    #在父模板中 写好块 {%  block title1 %} Tornado {% end %} , 哪个部分需要修改就在block后面,然后在子模板中直接用相同的块并且在块内部修改内容即可,body、JS 同理,block后面的名字可以任意取,最好见名知意
    #如果想要添加子模块
    
    {% block body %}
        许铖铖不帅
        {% include ./lesson05_include.html %} #通过include导入html即可
    {% end %}

    二、函数和类的导入

    #函数的导入只需要在 render里面将函数赋值给变量,然后在模板里面调用即可
    
    #类导入同理
    class MainHandler(tornado.web.RequestHandler):
        def get(self, *args, **kwargs):
            name = self.get_body_argument('name','no')
            urllist = [
                ('http://www.baidu.com','去百度'),
                ('http://www.shiguangkey.com','去时光'),
                ('http://www.zhihu.com','去知乎')
            ]
            atga = """<a href="https://www.baidu.com" target="_blank"> _____走 去百度_____</a>"""
            self.render('lesson05_extend.html',
                        username = name ,
                        time = time,
                        urllist = urllist,
                        atga = atga,
                        haha = haha ,#导入函数
                        cal = Calculation  #导入类
                        )
    #这种方法不利于前段端分离

      还有一种方法

    {% import time %}
    {{ time.time() }}
     
    #也可以直接用import 导入类
    {% from util.mod_file import add %} 
    #从util文件夹中的mod_file.py文件中导入函数add

    三、UI_modules 和 UI_methods

    #如果函数或类需要在很多个模板中被导入,那该如何做
    #在util文件夹里面创建两个py文件 ui_methods.py和ui_modules.py(这两文件名都是随便改的)
    #在extend_05.py文件里面导入这两个文件
    #在render(渲染)里面讲这两个文件名赋值
    #可以再模板里面直接用着py文件里面定义的函数、类
    
    #函数的运用是
    {{ 调用函数 }}
    {% module 调用类 %}
    
    #ui_methods.py文件里面的定义函数必须加self

      例子

    class Advertisement(UIModule):
        def render(self, *args, **kwargs):
            return self.render_string('lesson05_ad.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'
            ]

    四、模板其他命令

      apply

    #使用apply语句,使用函数的作用范围到最近的{% end %}位置
    {% apply upper %}
        xuchengcheng   <br>
        gaoqi
    {% end %}

      linkify

    #linkify 生成一个链接,但是要注意模板转义
    {{   linkify('百度: https:www.baidu.com')   }}
    <br>
    {% raw   linkify('百度: https:www.baidu.com')   %} #给括号里面的部分加个a标签
  • 相关阅读:
    ACdream 1069 无耻的出题人
    ACdream 1064 完美数
    ACdream 1028 Path
    ACdream 1020 The Game about KILL
    ACdream 1015 Double Kings
    CodeForces
    Codeforces 390A( 模拟题)
    Codeforces 389B(十字模拟)
    Codeforces 389A (最大公约数)
    Codeforces 417 C
  • 原文地址:https://www.cnblogs.com/xuchengcheng1215/p/8995338.html
Copyright © 2011-2022 走看看