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>
webpy 模版语言的更多相关文章
- Django模版语言 格式化显示 后台datatime()时间
Django模版语言 格式化显示 后台datatime()时间 场景描述:
- Jinja2模版语言自定义filter的使用
Jinja2模版语言,自带有一些filter,能够在前端的模版中控制数据按照相应的方式显示.比如以下两种filter,分别能在前端控制数字的近似精度显示和根据字符串长度补齐: round(value, ...
- puppet(4)-类、模版语言、模块
puppet(4)-类.模版语言.模块 代码重用: class, module 类 类的简单说明 类是用于公共目的的一组资源,是命名的代码块,创建后可在puppet全局进行调用,类可以继承类是我们构建 ...
- Django模版语言的复用 1. include标签--模版导入 2.inclusion_tag自定义标签--模版导入 3.母版
include标签--模版导入 ''' 前提:项目中,往往会出现多个页面拥有一个或几个相同的页面版块,或是一个页面多个页面版块是相同的 如何运用:可以将多个样式标签的集合进行封装,对外提供版块的名字( ...
- django -- url (模版语言 {% url 'test1' param1=5 param2=6 %})
如果想让form表单提交的url是类似 action="/index-5-6.html" 这样的,可以在html模版语言中使用{% url 'test1' param1=5 par ...
- django -- url (模版语言{{ request.path_info }})
在django的模版语言中中可以使用 {{ request.path_info }} 帮助生成url. urls.py from django.conf.urls import url, incl ...
- Django 模版语言
传入变量 {{ 变量名 }} 在 view.py 的函数返回 render 时在html文件名后传入一个字典,字典的 key 对应html文件中的变量名,value 为传入的值 views.py: d ...
- django -- 模版语言之过滤器Filters和for循环
前戏 在前面写的图书管理系统中,我们对模版语言应该已经不陌生了,使用{{ }}包裹起来的就是模版语言,只需要记住两种就可以了 {{ 变量名 }} 变量相关的 {% %} ...
- Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静态文件的加载load static),自定义simple_tag和inclusion_tag
Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静 ...
随机推荐
- STL使用总结
转载于http://blog.csdn.net/daisy_chenting/article/details/6898184 1. 概述 泛型编程思想最早缘于A.Stepanov提出的部分算法可 ...
- 分别利用并查集,DFS和BFS方法求联通块的数量
联通块是指给定n个点,输入a,b(1<=a,b<=n),然后将a,b连接,凡是连接在一起的所有数就是一个联通块: 题意:第一行输入n,m,分别表示有n个数,有输入m对连接点,以下将要输入m ...
- HDU1569 最大流(最大点权独立集)
方格取数(2) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- CMDB资产管理系统开发【day27】:cmdb API安全认证
1.API验证分析 API三关验证 客户端和服务端中都存放一份相同的随机字符串,客户端发请求的时候把随机字符串和当前时间进行MD5加密,同时带着当前时间通过请求头发送到API,进入三关验证. 第一关是 ...
- gulp压缩css和js
压缩 css 代码可降低 css 文件大小,提高页面打开速度. 规律转换为 gulp 代码 找到 css/ 目录下的所有 css 文件,压缩它们,将压缩后的文件存放在 dist/css/ 目录下.一. ...
- Java的Comparable接口的一个陷阱
转载自:http://my.oschina.net/jack230230/blog/56339 Java的Comparable接口提供一个对实现了这个接口的对象列表进行排序的办法.原始的排序对于简单的 ...
- IntelliJ IDEA 热加载
修改java文件后 win按:Ctrl+Shift+F9 mac按:cmd+Shift+F9 tomcat-maven-plugin 启动的项目也用这个快捷键热加载
- 【BZOJ】3626 [LNOI2014]LCA
[算法]树链剖分+线段树(区间加值,区间求和) [题解]http://hzwer.com/3891.html 中间不要取模不然相减会出错. 血的教训:线段树修改时标记下传+上传,查询时下传.如果修改时 ...
- 12.24笔记(关于//UIDynamic演练//多对象的附加行为//UIDynamic简单演练//UIDynamic//(CoreText框架)NSAttributedString)
12.24笔记1.UIDynamic注意点:演示代码:上面中设置视图旋转的时候,需要注意设置M_PI_4时,视图两边保持平衡状态,达不到仿真效果.需要偏移下角度.2.吸附行为3.推动行为初 ...
- HDU - 5327 Olympiad(一维前缀和)
Olympiad Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem ...