Uliweb设计分享             limodou@gmail.com             2012-6-14
内容介绍 近期变化 技术特点 未来展望         CCB
Uliweb近期变化(一) 目前最新版本是0.1.2 代码托管于 git  https://github.com/limodou/uliweb 和 code.google.com  http://code.google.com/p/uli...
Uliweb近期变化(二) ORM优化:多数据库支持,及命令行支持及改造,短  连接支持 Alembic支持  http://pypi.python.org/pypi/alembic Generic优化 増加GenericReferenc...
Uliweb的定位 Web开发框架 解决前后端数据交互,具备一定的业务处理能力 提高开发效率,充分考虑复用的处理 提供一致的定制方式,将经验转为有效的代码                          CCB
Uliweb项目如何组织 APP方式,满足一定条件的python包即可 自包含:配置信息,Model, View, 资源等 APP依赖 减少集中配置项   简化APP的安装过程,方便重用                         ...
典型的目录结构project/   apps/     settings.ini     local_settings.ini     app1/         templates/         static/         views...
Uliweb的配置文件处理 采用文本形式的配置文件 基本样式为: [GLOBAL] INSTALLED_APPS = [   ‘uliweb.contrib.orm’ ] 重名变量的处理(可变的自动合并,不可变的替換) <= 强制替換...
如何解决功能可替換?-- 配置解耦 可配置内容:APP自已的配置项,URL,BINDS,  FUNCTIONS, DECORATORS, Model 举例:FUNCTIONS  [FUNCTIONS]  flash = uliweb.con...
模板与静态资源 从web2py派生出来,増加{{block}}等功能,并反  馈给了web2py 自定义Tag,包括块Block 可以直接嵌入Python代码 支持环境注入 uliweb.contrib.template提供{{use...
UliORM的演变 2008,基于geniusql开发。想基于一个基于的SQL  的库来自已封装ORM。 考查了许多的ORM库,参考了GAE的datastore库 同年,将底层代码迁移到了SQLAlchemy。不断优化:    増加On...
可配置化ORM 提供在settings.ini中对Model进行配置  [MODELS]  user = uliweb.contrib.auth.models.User 在Model定义中可以使用字符串方式来引用Model 提供get_m...
如何解决CRUD--Generic uliweb.utils.generic ListView, AddView, EditView, DeleteView,  DetailView 可以自动生成相应的界面和Form代码,支持json ...
Generic示例一#coding=utf-8from uliweb import exposefrom uliweb.orm import get_model@expose(/)class BlogView(object):   def __...
Generic示例二def add(self):     from uliweb.utils.generic import AddView    def get_url(id):       return url_for(BlogView.vi...
Generic示例三def edit(self, id):     from uliweb.utils.generic import EditView    obj = self.model.get_or_notfound(int(id))  ...
未来展望 増加Admin功能,方便快速开发 重写Develop功能 増加CRUD的自动框架代码的生成 増强exportstatic的自动合并处理 加强约定化的处理,优化Generic功能 更多与前端优秀的js库进行集成 各组件的完...
CCB
Upcoming SlideShare
Loading in …5
×

Uliweb设计分享

1,897 views

Published on

介绍Uliweb近况及一些设计思路

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

  • Be the first to like this

No Downloads
Views
Total views
1,897
On SlideShare
0
From Embeds
0
Number of Embeds
289
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Uliweb设计分享

  1. 1. Uliweb设计分享 limodou@gmail.com 2012-6-14
  2. 2. 内容介绍 近期变化 技术特点 未来展望 CCB
  3. 3. Uliweb近期变化(一) 目前最新版本是0.1.2 代码托管于 git https://github.com/limodou/uliweb 和 code.google.com http://code.google.com/p/uliweb plugs 最新版本是 0.1.1 https://github.com/limodou/plugs 独立的文档项目 https://github.com/limodou/uliweb-doc plugs中提供bootstrap和大量jquery插件 CCB
  4. 4. Uliweb近期变化(二) ORM优化:多数据库支持,及命令行支持及改造,短 连接支持 Alembic支持 http://pypi.python.org/pypi/alembic Generic优化 増加GenericReference, GenericRelation 对云平台部署的支持:GAE, dotCloud, SAE, BAE, Heroku upload优化,支持X-SENDFILE处理方式 命令行优化:find, export, exportstatic, sqldoc 文档补充 Plugs组件的丰富 http://uliweb.clkg.org 和 uliwebzone项目 CCB
  5. 5. Uliweb的定位 Web开发框架 解决前后端数据交互,具备一定的业务处理能力 提高开发效率,充分考虑复用的处理 提供一致的定制方式,将经验转为有效的代码 CCB
  6. 6. Uliweb项目如何组织 APP方式,满足一定条件的python包即可 自包含:配置信息,Model, View, 资源等 APP依赖 减少集中配置项 简化APP的安装过程,方便重用 CCB
  7. 7. 典型的目录结构project/ apps/ settings.ini local_settings.ini app1/ templates/ static/ views.py models.py settings.ini app2/ wsgi_handler.py CCB
  8. 8. Uliweb的配置文件处理 采用文本形式的配置文件 基本样式为: [GLOBAL] INSTALLED_APPS = [ ‘uliweb.contrib.orm’ ] 重名变量的处理(可变的自动合并,不可变的替換) <= 强制替換 Settings.ini处理顺序:  Default_settings.ini, app/settings.ini, project/settings.ini, project/local_settings.ini 提供标准的本地配置支持 CCB
  9. 9. 如何解决功能可替換?-- 配置解耦 可配置内容:APP自已的配置项,URL,BINDS, FUNCTIONS, DECORATORS, Model 举例:FUNCTIONS [FUNCTIONS] flash = uliweb.contrib.flashmessage.flash‘ from uliweb import functions functions.flash(‘message’) 通过配置解决定义与使用的耦合 CCB
  10. 10. 模板与静态资源 从web2py派生出来,増加{{block}}等功能,并反 馈给了web2py 自定义Tag,包括块Block 可以直接嵌入Python代码 支持环境注入 uliweb.contrib.template提供{{use}}和{{link}} 的支持,可以方便引用一组css和js,并且支持依赖。 做到了开发和部署的分离,APP资源的复用。 模板替換—后定义的模板将覆盖在前定义的模板 find来查找 先编译后使用,可以有条件的缓存中间编译结果 CCB
  11. 11. UliORM的演变 2008,基于geniusql开发。想基于一个基于的SQL 的库来自已封装ORM。 考查了许多的ORM库,参考了GAE的datastore库 同年,将底层代码迁移到了SQLAlchemy。不断优化:  増加OneToOne, ManyToMany, Reference关系  増加相应的命令行工具  多数库支持  短连接支持  。。。 可以自动生成管理界面,类Django Model上进行表级操作,instance上进行记录级操作 CCB
  12. 12. 可配置化ORM 提供在settings.ini中对Model进行配置 [MODELS] user = uliweb.contrib.auth.models.User 在Model定义中可以使用字符串方式来引用Model 提供get_model()来获得Model类 在settings中后定义的可以替換前面定义的Model 去除象from xxx import yyy, import yyy这种 hard coding 有它使用的限制 CCB
  13. 13. 如何解决CRUD--Generic uliweb.utils.generic ListView, AddView, EditView, DeleteView, DetailView 可以自动生成相应的界面和Form代码,支持json 配置信息可放在Model中,也可以通过参数传递 减少继承,大量使用参数和回调  django吐槽 http://lukeplant.me.uk/blog/posts/djangos-cbvs- were-a-mistake/ 对处理过程进行封装(流程) CCB
  14. 14. Generic示例一#coding=utf-8from uliweb import exposefrom uliweb.orm import get_model@expose(/)class BlogView(object): def __init__(self): self.model = get_model(blog) @expose() def list(self): from uliweb.utils.generic import ListView def title(value, obj): return obj.get_url() view = ListView(self.model, fields_convert_map={title:title}, pagination=False) return view.run() CCB
  15. 15. Generic示例二def add(self): from uliweb.utils.generic import AddView def get_url(id): return url_for(BlogView.view, id=id) view = AddView(self.model, ok_url=get_url) return view.run() def view(self, id): from uliweb.utils.generic import DetailView obj = self.model.get_or_notfound(int(id)) view = DetailView(self.model, obj=obj) return view.run() CCB
  16. 16. Generic示例三def edit(self, id): from uliweb.utils.generic import EditView obj = self.model.get_or_notfound(int(id)) view = EditView(self.model, ok_url=url_for(BlogView.view, id=int(id)), obj=obj) return view.run() def delete(self, id): from uliweb.utils.generic import DeleteView obj = self.model.get_or_notfound(int(id)) view = DeleteView(self.model, obj=obj, ok_url=url_for(BlogView.view, id=int(id)), use_delete_field=deleted) return view.fun() CCB
  17. 17. 未来展望 増加Admin功能,方便快速开发 重写Develop功能 増加CRUD的自动框架代码的生成 増强exportstatic的自动合并处理 加强约定化的处理,优化Generic功能 更多与前端优秀的js库进行集成 各组件的完善与扩充 完善uliwebzone项目 完善文档 CCB
  18. 18. CCB

×