Uliweb 快速易用的Python Web Framework

2,426 views

Published on

Introduce an easy use python web framework -- Uliweb

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,426
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
22
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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>

×