Chinaunix首页 | 论坛 | 博客
  • 博客访问: 341403
  • 博文数量: 79
  • 博客积分: 3053
  • 博客等级: 中校
  • 技术积分: 861
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-27 20:43
文章分类

全部博文(79)

文章存档

2012年(3)

2011年(21)

2010年(15)

2009年(40)

分类: 系统运维

2011-12-15 18:18:40

tmpl_context,  TG 控制器不仅是页面的渲染器,同时承担着json的接口工作,把view-specific放到tmpl_context以及把model-data放到结果字典中,可以让我们更容易的使用json查询
@validate 使用sprox widget/form的自动生成器转化输入到python对象并检查需要的字段,
@validate(form=add_movie_form,error_handle=index,), 这里error_handle定义了当错误发生时控制器调用的方式

需要from sprox.formbase import AddRecordForm
一个类定义
class AddMovie(AddRecordForm):
    __model__ = Movie
add_movie_form = AddMovie(DBSession)

传递参数给模板
tmpl_context.add_movie_form = add_movie_form
在模板中加入
${tmpl_context.add_movie_form( action='add_movie') }
设置add_movie方法
@validate(form=add_movie_form,  error_handler=index,)
    def add_movie( self, title, description, year, genre, **named ):
        """Create a new movie record"""
        new = Movie(
            title = title,
            description = description,
            year = year,
            reviewed = False,
            genre_id = genre,)
        DBSession.add( new )
        flash( '''Added movie: %s'''%( title, ))
        redirect( './index' )

下拉框
在窗体中定义
genre_options = [x for x in enumerate((
            'Action & Adventure', 'Animation', 'Comedy',
            'Documentary', 'Drama', 'Sci-Fi & Fantasy'))]
genre = SingleSelectField(options=genre_options)
如果想从数据库中获取下拉框的数据,则修改如下:
修改root.py中页面的返回
原先:
return dict(modelname='Movie', value=kw)
修改后:
return dict(modelname='Movie',genre_options=model.DBSession.query(model.MovieGenera.id, model.MovieGenera.title),page='ToscaSample New Movie')

修改模板文件
原先:

Input Form

修改后:
Input Form

阅读(878) | 评论(0) | 转发(0) |
0

上一篇:TG的建表与初始化

下一篇:Turbogears 基础

给主人留下些什么吧!~~