zoukankan      html  css  js  c++  java
  • Mako中的Namespace详解

    Mako是Pylons的默认采用的模板,很简洁,也很强大。对于初次接触Mako的朋友来说可能会觉得Mako的Namespace很奇特,熟悉Jsp的会觉得和Jsp等大不一一样,不过要是接触过Django,写过Django的template,用过{% block %}{% endblock %}操作的话,应该很快就能熟悉Mako的Namespace。但Mako中的Namespace和Django的block还是很很大的不同的。本文着重讲述一下Mako中的基本Namespace的操作。
    Mako中常用的Namespace有local、self、parent、next,其中:
    local:指向当前执行的template
    self:对于没有使用inheritance的template来说,self等同于local;但如果使用了inheritance,self指向inheritance chain的最顶层(the topmost template)
    parent:指向当前template的直接上一级template(immediately preceding),Mako中的parent有点儿类似于python中的super
    next:指向当前template的直接下一级template(immediately following)
    下面举一例子对上述几个namespace做一说明:
    (1)创建base.html

    ## base.html
    <html>
        <body>
            <div class="header">
                <%block name="header"/>
            </div>
    
            ${next.body()}
    
            <div class="footer">
                <%block name="footer">
                    this is the footer
                </%block>
            </div>
        </body>
    </html>
    
    


    (2)创建layout.html

    ## layout.html
    <%inherit file="base.html"/>
    <ul>
        <%block name="toolbar">
            <li>selection 1</li>
            <li>selection 2</li>
            <li>selection 3</li>
        </%block>
    </ul>
    <div class="mainlayout">
        ${next.body()}
    </div>
    


    (3)创建index.html

    ## index.html
    <%inherit file="layout.html"/>
    
    <%block name="header">
        this is some header content
    </%block>
    
    <%block name="toolbar">
        ## call the parent's toolbar first
        ${parent.toolbar()}
        <li>selection 4</li>
        <li>selection 5</li>
    </%block>
    
    this is the body content.
    
    


    (4)此时整个inheritance chain示意图为 base.html --> layout.html --> index.html
    此时index.html的实际内容应该为:

    <html>
        <body>
            <div class="header">
                this is some header content
            </div>
    
            <ul>
                <li>selection 1</li>
                <li>selection 2</li>
                <li>selection 3</li>
                <li>selection 4</li>
                <li>selection 5</li>
            </ul>
    
            <div class="mainlayout">
            this is the body content.
            </div>
    
            <div class="footer">
                this is the footer
            </div>
        </body>
    </html>
    
    
  • 相关阅读:
    java连接mysql数据库
    在多分类任务实验中用torch.nn实现dropout
    在多分类任务实验中手动实现实现dropout
    Ubuntu 20.04 使用参考博客
    多分类任务中不同隐藏单元个数对实验结果的影响
    多分类任务中不同隐藏层层数对实验结果的影响
    利用torch.nn实现前馈神经网络解决 多分类 任务使用至少三种不同的激活函数
    利用torch.nn实现前馈神经网络解决 二分类 任务
    torch.nn.BCELoss用法
    写了个小爬虫,为何用上代理ip总是出现错误。
  • 原文地址:https://www.cnblogs.com/Jerryshome/p/2029560.html
Copyright © 2011-2022 走看看