Uliweb-快速易用的 Python Web Framework Limodou (limodou@gmail.com) 2009年8月16日
说说那过去的事 Web开发那些事 拨云见日 重用性是No.1 方便、还是方便 层次 不足 示例 展望 资源 Q&A 内容提要
我的Python经历:最早是PHP,后来是Zope, 然后是CherryPy, Karrigell, Django, Web2py。TurboGears, Pylons了解一点,没 有真正用过。 牢骚: Django:模板(功能及配置),URL,APP的重用不够, DRY的矛盾哲学(python-cn邮件列表的大讨论) Web2py:模板,URL,APP的重用,向前兼容的哲学 说说那过去的事
Web开发那些事 简单的Web开发,做网站 复杂的Web开发,做应用 主要功能: 其它功能: Request和Response的处理 模板 URL映射 数据加工:ORM,文本,静态文件,其它 部署 其它功能: 用户认证(配置文件,数据库,LDAP,OpenID等) 用户定制(Theme,布局,插件,管理) API Ajax 桌面化 与其它应用集成 Web开发那些事
为什么有这么多的框架? 哲学不同 每一种框架代表一种哲学,一种思维方式,一种 使用习惯 有许多的模块可以完成组成Web框架的不同功能, 使得构建框架变得相对容易 框架之间的差异一方面是功能,组件的差异,但 更重要的是哲学,思维,习惯的差异 为什么有这么多的框架?
拨云见日 MVT型框架 更完全的APP重用 Hook系统 简单的URL映射 模板自动关联(web2py-like) Middleware, WSGI-Middleware 支持 扩展的Web2py模板(支持tag扩展,Django-like Block) 更完全的APP重用 APP级别配置文件(settings.ini) 静态文件,模板定位 APP管理功能 Hook系统 简单的URL映射 通用功能:开发服务器(自动重启),i18n支持,静态 文件支持,命令行工具,Debug页面,简单的 Admin 拨云见日
重用性是No.1 可重用元素:模板、View、静态文件、Model、 Form…App Uliweb中的App可以是任何东西:模板,View, 静态文件,配置参数。模板和静态文件可以做为 一个整体来使用 独特的App的依赖处理机制(config.ini) 所做努力: 模板的搜索 静态文件的处理 settings.ini的合并 重用性是No.1
不支持APP级别的静态文件 没有APP级别的配置文件 只能共享Model, View Django APP的不足
Web2py APP的不足 APP是Application级别的共享,很难实现代码级 别共享,是运行和部署的最小单位 Uliweb和Django的是开发的最小单位 Web2py APP的不足
方便、还是方便. Web2py-like view函数: 模板自动套用,必须返回一个dict对象 @expose(‘/index’) def index(): print request return {} 模板自动套用,必须返回一个dict对象 内置一些全局变量和web2py类似,如:request, response expose()来实现URL与view函数的映射。 url_for(func_name)可以反向得到view对应的URL 减少了不必要的import 方便、还是方便.
方便、还是方便.. Web2py-like Template 可以直接嵌入Python代码,不需要考虑缩近,但在结 束时要使用{{pass}} 支持Python代码与HTML代码混合 支持django-like block功能 支持自定义tag 方便、还是方便..
方便、还是方便… 简单的URL映射,使用expose() 类urls.py的使用方式 @expose(‘/static/<path:filename>’) @expose(‘/archieve/<int:year>/<int:mon>’) @expose(‘/user/<username>’) @expose(‘/page’, default={‘pageno’:1}) REST:@expose(‘/view’, methods=[‘GET’]) 类urls.py的使用方式 方便、还是方便…
配置管理 Settings.ini(类ini,Python语法) Django使用settings.py,不方便程序处理 Web2py讲究0配置 配置管理
Admin界面
层次 Uliweb是一个相对基础的框架 简单的应用可以基于Uliweb直接进行开发 平台维护人员 应用开发人员 层次
造轮之路-造你的轮,让别人说去吧 喜欢 对原模块改动太大 不被人接受 响应太慢 有更好的实现 更容易了解细节,真正掌握 学习主义者(不是拿来主义) 造轮之路-造你的轮,让别人说去吧
Uliweb中的“轮子” Ini处理 pyini 模板处理 template Lockfile weto/lockfile Session weto ORM orm Form form I18n i18n Uliweb中的“轮子”
App介绍 Admin Session Cache Orm Template (内容动态组装) Staticfiles Upload Auth i18n App介绍
ORM还不完善,相关的数据库重建,迁移等 性能没有经过验性 没有Killer的应用 用户少 不足
命令行 makeproject makeapp runserver runadmin 命令收集系统 app/commands call <command> i18n exportstatic 命令行
Hello, Uliweb Userman(uliweb-tests中) GuestBook(uliweb-tests中) 示例
展望 基于Uliweb的CMS二次开发系统,加入常见的 应用元素 Uliweb的app更方便的发布与安装 发布正式的Uliweb版本 丰富而准确的文档 展望
资源 主页: http://code.google.com/p/uliweb 文档: http://uliwebproject.appspot.com 列表: http://groups.google.com/group/uliweb Learning Uliweb: http://sites.google.com/site/learninguliwe b 测试代码: http://code.google.com/p/uliweb-tests 资源
请大家提问。 Q&A