Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Uliweb 快速易用的Python Web Framework

2,476 views

Published on

Introduce an easy use python web framework -- Uliweb

Published in: Technology
  • Be the first to comment

Uliweb 快速易用的Python Web Framework

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

×