免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2338 | 回复: 0
打印 上一主题 下一主题

在kid页面中自动帮你选择checkbox或radio框 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-24 11:24 |只看该作者 |倒序浏览

                                    在很多系统中,我们需要让页面记住我们的选择框,如调查问卷,试题选择页面,在分页提交后,回来仍能显示你以前的选择。
    步骤是,(1)提交当前页面选择到数据库中,同时保存到session中,(2)如果回到原来页面,判断session中有无值,有,根据其中的值,自动帮你选好。
    我们只是关注把值传到页面中,看看在kid模板中如何自动实现。
原理其实非常简单
    默认选择
    默认不选择
1.新建turbogears项目,
  d:/project>tg-admin quickstart AutoCheckbox
  默认回车两次,自动生成所需要的目录结构。
  d:/project>cd AutoCheckbox.
2.在controllers.py中,      
   
               
               
                class Root(controller.RootController):
   @expose("autocheckbox.templates.abc")
   def ret(self):
      items = "ABCD"
      items_selected="AB"
      return dict(items=items,items_selected=items_selected)      
我们可以通过在浏览器访问http://lcoalhost:8080/ret来查看结果。
把items和items_selected传入到tempaltes.abc模板中,下一步在指定的目录下生成模板。
进入templates目录。为简单起见,直接copy目录下的,welcome.kid => abc.kid
..>cd templates
..>copy welcome.kid abc.kid
3.在abc.kid中,删除之间的内容。添加所需的内容。
body>
input type="checkbox" checked=""/>  -->
/body>
或者
body>
input type="checkbox" checked=None/>
/body>
看到了吧,关键在于
对于kid模板来说,如果标签的属性如checked="",在编译生成xhtml时保留它为checked="True",
如果checked=None,则在编译时,会去掉这个属性。
所以在我们自动选择的项,checked="", 否则checked=None, 就这么简单。
我们有两种方式来实现它。
(1)直接利用checked=${(None,'')[True or False]}
   (None,'')[boolean value]
   能看懂吗,如果你直接在python交互式环境中输入,其实就明白了,
   在python中,[False]==>[0],  [True]==>[1]
   (None,'')[0] = None, (None,'')[1] == ''。这下明白了?
  checked=${(None,'')[True or False]}
  如果[True], checked=""
  如果[False], checked=None
  所以页面代码为
  
   
               
               

  
       value="${item}
     checked="${(None,'')[item in items_selected]}">${item}
  
简单解释下,
py:for,py:strip, pycontent是kid中的xml方法,py:for类似于python中的for用法,${expression},kid把出现${}地方用其中的expression表达式替换。
用py:for取出ABCD中的每一个给item。判断item in items_selected(AC)中,如果在其中,checked='',不在其中的话checked=None.
另外一种方式在kid中。在py:attrs="checked=..."
               
               
def checker(bool):
    return '' if bool else None
?>

  
       value="${item}   
       py:attrs="checked=checker(item in items_selected)">${item}
  


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13637/showart_1145524.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP