PageRenderTime 27ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/docs/zh_CN/uliweb/introduction.md

https://github.com/limodou/uliweb-doc
Markdown | 130 lines | 83 code | 47 blank | 0 comment | 0 complexity | db6094710ee04778193a1dd8713a0faf MD5 | raw file
  1. # Uliweb 简介
  2. ## 它是什么
  3. Uliweb是一个全栈式的Python Web Framework它有三个主要设计目标可重用性可配
  4. 置性和可替换性所有的功能都是围绕着这些目标
  5. 这个项目是由Limodou <mailto:limodou@gmail.com>发起并创建的
  6. ## License
  7. Uliweb按照BSD协议进行发布
  8. ## 基础组件
  9. 它并不完全是从头写的一个东西我目前使用了一些库
  10. * [Werkzeug](http://werkzeug.pocoo.org/) 用它来进行框架的核心处理,比如:
  11. URL MappingDebugRequest, Response
  12. * [SqlAlchemy](http://www.sqlalchemy.org) 基于它封装了Uliorm,可以使用ORM对
  13. 数据库进行处理
  14. 还有一些比较小的引用
  15. * template 是从 [tornado](http://mdp.cti.depaul.edu/) 改造来的(从0.4开始,在此之前是基于 [web2py](http://mdp.cti.depaul.edu/) )
  16. * 部分处理代码从 [Django](http://www.djangoproject.com/) 中借鉴
  17. 另外还有一些是自已新造的
  18. * Form处理可以用来生成HTML代码和对上传的数据进行校验
  19. * i18n处理包括对模板的处理
  20. * Cache Session 模块
  21. * Uliorm是在SqlAlchemy基础之上进行的封装同时参考了GAE中的datastore的代码
  22. * 框架的处理代码这块不可能不自已造了
  23. * 插件机制从Ulipad中移植并进行了改造
  24. ## 功能特点
  25. * 项目组织管理
  26. * 采用MVT模型开发
  27. * 分散开发统一管理采用App方式的项目组织每个App有自已的配置文件templates目录
  28. static目录使得Uliweb的App重用非常方便同时在使用上却可以将所有App看成一个整体
  29. 可以相互引用静态文件和模板缺省是所有App都是生效的也可以指定哪些App是生效的
  30. 所有生效App的配置文件在启动时会统一进行处理最终合成一个完整的配置视图
  31. * URL处理
  32. * 灵活强大的URL映射采用Werkzeug的Routing模块可以非常方便地定义URL并与View函数
  33. 进行绑定同时可以根据view函数反向生成URL支持URL参数定义支持缺省URL定义:
  34. ```
  35. appname/view_module/function_name
  36. ```
  37. * View与Template
  38. * View模板的自动套用当view返回dict对象时自动根据view函数的名字查找对应的模板
  39. * 目前View方法支持一般函数和类的方式
  40. * 环境方式运行每个view函数在运行时会处于一个环境下因此你不必写许多的import许多
  41. 对象可以直接使用比如request, response等可以大大减少代码量
  42. * 模板中可以直接嵌入Python代码不需要考虑缩近只要在块结束时使用pass支持模板的
  43. include和继承
  44. * ORM
  45. * 类Django和GAE的datastore可以支持自动建表同时提供命令行工具进行数据的备分装入建表等处理
  46. * Model可配置化因此可以实现Model的替换
  47. * 提供多数据库连接的支持
  48. * 支持alembic的数据库迁移处理
  49. * i18n
  50. * 支持代码和模板中的i18n处理
  51. * 支持浏览器语言和cookie的自动选择动态切换语言
  52. * 提供命令行工具可以自动提取po文件可以以App为单位或整个项目为单位并在处理时自动将
  53. 所有语言文件进行合并处理当发生修改时再次提取可以自动进行合并
  54. * 扩展
  55. * plugin扩展这是一种插件处理机制Uliweb已经预设了一些调用点这些调用点会在特殊的地方
  56. 被执行你可以针对这些调用点编写相应的处理并且将其放在settings.py中当Uliweb在启动
  57. 时会自动对其进行采集当程序运行到调用点位置时自动调用对应的插件函数
  58. * middleware扩展它与Django的机制完全类似你可以在配置文件中配置middleware类每个
  59. middleware可以处理请求和响应对象
  60. * views模块的初始化处理在views模块中如果你写了一个名为__begin__的函数它将在执行
  61. 要处理的view函数之前被处理它相当于一个入口因此你可以在这里面做一些模块级别的处理
  62. 比如检查用户的权限因此建议你根据功能将view函数分到不同的模块中
  63. * 命令行工具
  64. * 可以自动创始初始工作环境自动包含必要的目录结构文件和代码
  65. * 静态文件导出可以将所有生效的App下的static导出到一个统一的目录
  66. * 除了有项目组命令工具外还提供APP专属命令工具如ORM
  67. * 部署
  68. * 支持GAE部署
  69. * 支持Apache下的mod_wsgi部署
  70. * 支持uwsgi部署
  71. * 支持dotcloud部署
  72. * 支持sae部署
  73. * 开发
  74. * 提供开发服务器并当代码修改时自动装载修改的模块
  75. * 提供debug功能可以查看出错的代码包括模板中的错误
  76. ## 社区
  77. * 邮件列表 http://groups.google.com/group/uliweb
  78. * QQ讨论组 162487035
  79. ## 链接
  80. * Uliweb 项目主页 https://github.com/limodou/uliweb
  81. * Uliweb-doc 文档项目 [http://github.com/limodou/uliweb-doc](http://github.com/limodou/uliweb-doc)
  82. * Uliweb-doc 在线文档查看链接 [http://limodou.github.com/uliweb-doc/](http://limodou.github.com/uliweb-doc/)
  83. * plugs Uliweb apps收集项目 https://github.com/limodou/plugs