::-- ZoomQuiet [2005-12-11 04:45:50]
1. K4日:KS
|
不爽直!使用新的KS 页面组织 |
1.1. lovely session
学习一下子文档吧!
1 so = Session() 2 if not hasattr(so, 'x'): 3 so.x = 0 4 def index(): 5 print "x = %s" %so.x 6 print '<br><a href="increment">Increment</a>' 7 print '<br><a href="decrement">Decrement</a>' 8 print '<br><a href="reset">Reset</a>' 9 10 def increment(): 11 so.x = _private(so.x) 12 raise HTTP_REDIRECTION,"index" 13 def decrement(): 14 so.x -= 1 15 raise HTTP_REDIRECTION,"index" 16 def reset(): 17 so.x = 0 18 raise HTTP_REDIRECTION,"index" 19 def _private(x): 20 """The function name begins with _ : internal function, 21 can't be call by a url""" 22 return x+1
不是吧!! 一个页面就作完了四种动作!完全是CherryPy 味的!!
1.2. HTMLTags
函式化的HTML生成
- 唉呀呀!!还真的是心想事儿成!2.2 增加的新功能哪! 可以将一个标准的HTML页面由几行 Py脚本自然生成!
1 stylesheet = LINK(rel="Stylesheet",href="doc.css") 2 header = TITLE('Record collection')+stylesheet 3 title = H1('My record collection') 4 rows = Sum ([TR(TD(rec.title,Class="title") 5 +TD(rec.artist,Class="Artist")) 6 for rec in records]) 7 table = TABLE(TR(TH('Title')+TH('Artist')) + rows) 8 print HTML(HEAD(header) + BODY(title + table))
- 那未,只要结合 KS 和 HTMLTags 功能就可以快速实现想要的复杂展示功能了!还可以方便的复用!
当然的使用Leo 八股化你所有的.KS
<< page declarations >> 同样是引用声明什么的
<< htmlcode >> 就是利用Leo来快速复用的各种 HTML 代码
<<ini>> 初始化部分,就是各响应页面都要使用的变量准备
@others 包含以下各种 def action(): 样定义的实际响应页面和def _function(): 可以反复调用的不作为页面响应的普通函式声明
1.3. 登录
从默许的index 自动导向 login 那
在
照猫画虎, 使用raise HTTP_REDIRECTION,"login" 来根据是否有登录过来导向登响应
- 当然的,要在 .KS 的 ini 初始化部分先声明会话容器:
在没有进行登录前,准备一个值为NULL 的usr 用户会话对象
好了,实际的登录表单还是 KQF来干:
1 p = Karrigell_QuickForm('fm_login'
2 ,'POST'
3 ,'chkusr'
4 ,"登录自学问卷")
5 p.addHtmNode('text','uname'
6 ,"staff帐号"
7 ,{'size':40,'maxlength':8})
8 p.addGroup(["submit","btn_submit","提交","btn"]
9 ,["reset","btn_reset","重写","btn"])
10 p.addRule('uname','required'
11 ,"成员名是必须的!Login name is required!")
12 p.display()
非常简洁,标准
进行有效性判别的处理也是个标准的KS 函式
先别让页面自动跳走,看一看,是否随愿的将登录信息记录了?!
- 问卷的使用原则是,任何人都可以登录,问答,但是:
- 只有有效的成员问答才会统计
- 只有个别的成员才有管理/编辑问卷的权限
1.4. 多问卷选择
有了登录后的用户信息,就可以根据不同的角色进行处理了
1.4.1. fnmatch
- 指定目录中某模式的所有文件的尋找…………
有内置的处理模块哪!fnmatch
配合统一设置进行搜索
就可以找出目录中所有以.cfg结尾的文件!
- conf 对象是新发布模式下的统一设置信息对象
因为,担心可能需要多个.KS 文件来组织网站,不想象原先那样滥用Leo来复用信息了
所以,建立@nosent questionnaire.cfg 统一配置文件
这样,conf = DictIni("questionnaire.cfg") 一下子,就可以在所有.KS 页面中获取统一的站点设置了
- conf 对象是新发布模式下的统一设置信息对象
1.4.2. 列表所有问卷
根据问卷的状态进行归类列表
使用不同的字典容器先过滤一下子搜索出来的文件;
- 然后使用类似的输出就好:
1.5. 小节
实际上,本日,你使用 .ks 体验了一把函式化的页面发布,成果就一个脚本index.ks
但是以前完成的.pih 依然好用,而你将趁兴将它们都重构为更加爽快的函式化页面发布
- 而且,你忍不住对CSS进行了深入的定制,在输出代码的最简和页面表现丰富之间进行了有效的探索
1.5.1. 明日任务
心情舒畅!快速的完成了更加简练的功能页面!
- 但是,如何将编辑,回答,统计融合起来?
- 点击进入不同问卷,可以回答/或是编辑
- 点击编辑就直接编辑
- 提交就成为新版本问卷
- 问卷要有版本管理
- 提交后,可以立即回到问答或是问卷集首页
- 任何页面都有安全退出的链接
- .... 呜乎哀哉,好象越作越多了,任务…………
1.6. 实例下载
使用 SVN 下载:
1.7. 讨论
返回 KarrigellWebDev -- 快速体验K开发