zoukankan      html  css  js  c++  java
  • webpy 模版语言

    webpy框架拥有自己的模版语言Templetor

    Templetor具有Python的语言风格

    可以直接嵌入Python代码

    $code:
      videoIn = post.filename and post.filename.split('.')[-1] in ['MP4']
      imageIn = post.filename and post.filename.split('.')[-1].upper() in ['JPG']
    

    Templetor所使用的转义字符是$, $code:表示接下来的是Python代码

    与Python一样,Templetor需要保持正确的缩进,而没有标识模版开始与结束的语句

    一、模版中的变量

    使用模版的一个重要原因是,不同的页面只有少许文字的差异,模版在那些不同的地方定义适当的变量就可以很好地解决这个问题

    Templetor模版语言中,在模版的开始,需要用$define with声明模版所使用的变量

    hello.html

    $def with (name) Hello $name!

     声明的变量必须与视图函数传入的变量保持一致,

    render = web.template.render('templates')
    return render.hello('world')
    

     web.template.render创建了一个渲染函数,'templates'是模版所在的目录

    hello表示模版的名称,'world'便是传入模版的参数

    和Python一样,模版语言中的变量也有不同的类型

    如果是字符串或数值,$variable便可直接获得变量的值

    非常不错的一个地方是,变量还可以是数组,字典,你可以用和Python相同的方式在模版中进行引用

    但更为方便的是使用for循环控制结构

    $for post in posts: #和Python完全相同的语法
      <div class="item">
        <a href="/view/$post.id">$post.title</a>
        $if context.user != 'anonymous' and context.user == post.username:
          <div class="edit"><a href="/edit/$post.id">Edit</a></div>
        <div class="date">$post.posted_on[0:19]</div>
        <div>$post.content[0:100]</div> #对于字符串一样地可以进行切片
      </div>
    

     需要注意的是在控制结构中,引用变量不再需要在前面加上$符号

    二、模版的继承

    使用模版的一个重要原因在于,网页包含许多共同的导航栏或是页脚,可以设计一个基础的模版,然后在此基础上进行扩展

    render = web.template.render('templates', base='base')
    

     base.html(.html被省略)就是这个基础模版,

    父模版和其他模版一样需要在首行声明,所引用的变量

    $def with (page)
    

     在视图函数中会隐式地将子模版传入page变量中

    通过$:page可以获得子模版的全部内容

    你可以在子模版中定义变量,这在子模版中有引用css文件时变得尤为必要

    $var cssfiles: /static/index.css /static/common.css #甚至用一个变量可以引用多个css文件
    

     在父模版中,便可吧css文件的引用放在合适的位置

    <head>
    $if page.has_key('cssfiles'): #判断子模版中是否定义了cssfiles变量
      $for f in page.cssfiles.split():
        <link rel="stylesheet" href="$f" type="text/css">
    </head>
    
  • 相关阅读:
    第四课:数字系统抽象
    第三课:叠加法和戴维南法
    第二课:基本电路法
    电路和电子学第一课:集总电路抽象
    第三十六课:告别演出
    第三十五课:多普勒效应和宇宙大爆炸
    第三十四课:光栅和分辨率
    第三十三课:干涉
    第三十二课:复习课
    第三十一集:彩虹
  • 原文地址:https://www.cnblogs.com/meelo/p/4239970.html
Copyright © 2011-2022 走看看