Uliweb- 快速易用的 Python Web Framework Limodou ( [email_address] ) 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 框架的不同功能,使得构建框架变得相对容易 框架之间的差异一方面是功能,组件的差异,但更重要的是哲学,思维,习惯的差异
拨云见日 MVT 型框架 模板自动关联 (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 的合并
Django APP 的不足 不支持 APP 级别的静态文件 没有 APP 级别的配置文件 只能共享 Model, View
Web2py APP 的不足 APP 是 Application 级别的共享,很难实现代码级别共享,是运行和部署的最小单位 Uliweb 和 Django 的是开发的最小单位
方便、还是方便 . Web2py-like view 函数: @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() @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 上的定制,以此为基础进行二次开发 平台维护人员 应用开发人员
造轮之路-造你的轮,让别人说去吧 喜欢 对原模块改动太大 不被人接受 响应太慢 有更好的实现 更容易了解细节,真正掌握 学习主义者(不是拿来主义)
Uliweb 中的“轮子” Ini 处理 pyini 模板处理 template Lockfile  weto/lockfile Session weto ORM orm Form form I18n i18n
App 介绍 Admin Session Cache Orm Template ( 内容动态组装 ) Staticfiles Upload Auth i18n
不足 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/learninguliweb 测试代码:  http://code.google.com/p/uliweb-tests
Q&A 请大家提问。

Uliweb 快速易用的Python Web Framework

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