## page was renamed from ObpLovelyPython/PCS303 ##language:zh #pragma section-numbers off ||status|| 草稿 ||清风; 100%|| <> ##startInc = PCS303 web2py = == 体会 == 1. 发展比django晚,社区也小很多,功能相比之下还需要完善,比如ORM没有django完善,也没有什么signal之类的东西 1. 某些约定可能更接近rails,比如每个controller的方法都自动对应一个view,而不是象django中是否存在view都是由用户来指定的 1. model和controller是运行在一个特殊的环境下,因此它们不是一个完善的python模块,但是这样你也减少了许多的导入。由些带来的是一些exec的使用。我也在邮件列表中提出了问题:exec的效率会是如何? 1. 多applicances设置,但是不象django那样app是分工协作的,而web2py每个applicance其实就是一个完整的应用,因此交互上目前还没有好的模式,Massimo(web2py的作者)是建议多app之间通过xmlrpc来交互,挺有意思的方式。不过象有些页面级的复用如何共享还不清楚。 1. model的创建是自动化的。写完model程序,就可以自动创建表了。甚至某些字段的修改,增加等也可以自动完成。很方便。 1. 号称是不需要安装,配置。提供web方式的开发环境,写程序,模板都可以在web上进行。app可以打包,上传。有些象zope了。 1. url一般是采用/appliance/controller/function?argv=的形式,不象django是使用正则式。好象也支持特殊的route,不过不清楚怎么用。 1. web server是自带的,使用cherrypy,因此我目前了解如果与apache配合的话需要使用反向代理。 1. 因为是在一个环境下运行,因此象request, response之类的不需要在controller的函数中列出来,可以直接使用。 * 因此有一种更方便的开发方式就是,可以在模块前面做统一的处理,相当于模块级别的处理,可以对response进行操作。 * 相比之下比django要方便些。不过也象前面说的,效率? 1. 模板简单, * 支持extend,include, * 另外{{=var}}会自动对html代码进行转义。 * 模板可以直接嵌入python代码,因此有些象mako,在运行时是先编译成python代码,然后再执行。 * 我挺喜欢,可以在模块中写python程序,而且比效简单。 1. response已经内置了许多功能,如xmlrpc([[http://mdp.cti.depaul.edu/examples/default/examples|见例子48]]),大文件下传支持 ([[http://mdp.cti.depaul.edu/examples/default/examples|见例子47]])简单的ajax支持等。象xmlrpc, ajax的东西django则需要自已去写了。 1. model定义好后,可以直接生成SQLForm显示在web上,与newform很象。也提供Form的方式。 1. 创建一个新的app不是一个空的东西,它其实是welcome.tar的一个拷贝,所以已经是一个可以工作的东西。并且在它的layout中已经支持简单的布局,菜单定义,提示信息等功能了。 1. 如果在开发时出现错误,会自动生成一个ticket进行记录,挺有意思。 1. 自带一个web编辑器,可以支持象python的自动语法高亮。 1. 有一个试验性的web model designer,还没有正式投入使用,但是从演示已经可以设计model,关联外键,并可以生成web2py格式的model定义语句用在你的程序中。 == 练习 == ##endInc -- 清风 <>