Uliweb框架介绍
为什么选Uliweb
易学易用
功能强大
什么是Uliweb
• 基于Python语言的Web开发框架
• 2008年开始开发
• 最新版本是0.4.1
URL
URL解析
调用处理方法
数据库操作 模板调用 JSON数据 图像 异步处理
结果
数据库
CacheSession
邮件
展示
I18N
权限
组织 URL
模板 静态资源 API
应用
配置 处理方法
数据
NoSQL 文件处理
Form
功能复用
开发服务器
测试
命令行
开发 部署
静态文件导出
与常见环境的集成
配置信息
命令行
运维
功能扩展
运行监控
日志分析
开发效率 适用性灵活性 性能,稳定,易扩展
设计理念
可复用
可配置
可替换
快速开发
模块化组织
多级配置
配置替换
组件及代码生成
有意思的特性
APP的组织方式
project/
apps/
settings.ini
local_settings.ini
app1/
templates/
static/
views.py
models.py
settings.ini
app2/
wsgi_handler.py
APP的配置
[GLOBAL]
INSTALLED_APPS = [
'uliweb.contrib.auth',
'uliweb.contrib.staticfiles',
'uliweb.contrib.orm',
'uliweb.contrib.upload',
'uliweb.contrib.template',
'uliweb.contrib.i18n',
…
'app1'
]
settings.ini的执行
• uliweb.core/default_settings.ini
• $(app)/settings.ini ->按APP的定义顺序进行覆盖
• apps/settings.ini
• apps/local_settings.ini
settings.ini示例
#coding=utf8
[GLOBAL]
INSTALLED_APPS = [
'uliweb.contrib.staticfiles',
]
[MENUS_CONFIG]
menu_render =
'uliweb_admin.admin.menu_render'
多种View的定义模式
• 函数方式
@expose(‘/‘)
def index():
return “Hello, Uliweb”
• 类方式
@expose(‘/blog’)
class Blog(object):
@expose(‘’)
def index(self):
return {}
模板自动套用
• view为函数时,放在app下的
templates/function_name.html
• view为类时,放在app下的
templates/classname/method_name.html
强大的模板
• 支持模板的继承、包含
• 可以直接插入python代码,在代码块缩近时使用pass
,自动缩排
• 先编译后使用
资源引用
use, link
{{use “avalon”}}
{{link “test.js”}}
‘uliweb.contrib.template’
<script type="text/javascript"
src="/static/avalon/avalon.js?ver=18"></scrip
t>
<script type="text/javascript"
src="/static/avalon/avalon_init.js?ver=18"></
script>
[FUNCTIONS]
get_model = 'uliweb.orm.get_model'
get_object = 'uliweb.orm.get_object'
set_echo = 'uliweb.orm.set_echo'
from uliweb import functions
User = functions.get_model(‘user’)
functions 通用函数调用
ORM
• 基于SQLAlchemy改造
• 支持一对一,一对多,多对多关系
• 支持多数据库
• 集成alembic实现Model的自动迁移
• Model可以配置
配置化
[MODELS]
wikipage = 'wiki.models.WikiPage'
wikichangeset = 'wiki.models.WikiChangeSet'
get_model()
from uliweb import functions
User = functions.get_model(‘user’)
Alembic集成pip install uliweb-alembic
uliweb alembic init
uliweb alembic diff
uliweb alembic upgrade
强大的命令行
• 创建项目
• 创建APP
• 启用开发服务器
• ORM相关的命令 :建表,重置,迁移,生成文档,生成建表语
句,卸载数据,装入数据,生成dot图
• 查找命令:URL对应的view, 模板,静态文件等
• 静态文件导出
• I18N翻译信息提取
自定义命令
• 可以在APP下创建自已的命令
• 使用uliweb makecmd来自动生成模板
• 支持子命令
uliweb shell
• 自动启动应用,以及导入常见对象,如application, settings,
functions
• 支持IPython,如果安装了ipython会自动使用,通过
uliweb shell –notebook
来启动IPython Notebook
Hello, Uliweb例子
• uliweb makeproject Hello
• cd Hello
• uliweb makeapp World
• uliweb runserver (访问 http://localhost:8000)
相关资源
• 项目: https://github.com/limodou/uliweb
• 文档:http://limodou.github.io/uliweb-
doc/zh_CN/index.html
Q&A

01.uliweb介绍