PageRenderTime 34ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/README.md

http://github.com/limodou/uliweb
Markdown | 145 lines | 102 code | 43 blank | 0 comment | 0 complexity | a9594a9ffc3753c86de0a283dbab2808 MD5 | raw file
Possible License(s): LGPL-2.0, BSD-3-Clause, Apache-2.0
  1. ![LOGO](https://raw.github.com/limodou/uliweb/master/logos/uliweb_logo_media.png)
  2. Uliweb Introduction
  3. =====================
  4. [![Join the chat at https://gitter.im/limodou/uliweb](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/limodou/uliweb?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
  5. Limodou <limodou@gmail.com>
  6. ## About Uliweb
  7. Uliweb is a full-stacked Python based web framework. It has three main design
  8. goals, they are: reusability, configurability, and replaceability. All the
  9. functionalities revolve around these goals.
  10. This project was created and lead by Limodou <mailto:limodou@gmail.com>.
  11. ## License
  12. Uliweb is released under BSD license.
  13. ## Infrastructure
  14. Uliweb was not created totally from scratch. It uses some modules created by
  15. other developers, for example:
  16. * [Werkzeug](http://werkzeug.pocoo.org/) Used to handle core processes in the framework.
  17. For example: URL Mapping, Debug, Request, Response, etc.
  18. * [SqlAlchemy](http://www.sqlalchemy.org) The ORM based on it. Developers can access
  19. databases, or use the module separately.
  20. I also referenced some code from other web frameworks, for example:
  21. * The Templating system is modified from [tornado](http://www.tornadoweb.org/).
  22. * Some code inspired from Django.
  23. I also constructed a few new "wheels" myself. For example:
  24. * Form processing module. Developers can use it to create HTML code, validate submitted data and
  25. convert submitted data to Python data types.
  26. * I18n processing including template support, language lazy process.
  27. * Cache & Session modules.
  28. * Uliorm, which is an ORM module, was built on top of SqlAlchemy. I also referenced from
  29. GAE datastore module.
  30. * Framework runtime process.
  31. * Plugin mechanism, styled after the one used in the [UliPad](http://code.google.com/p/ulipad) project.
  32. ## Features
  33. * Project Organization
  34. * MVT(Model View Template) development model.
  35. * Distributed development but unified management. Uliweb organizes a project with
  36. small apps. Each app can have its own configuration file(settings.ini), template
  37. directory, and static directory. Existing apps can be easily reused, but are treated as a compound.
  38. web application project if configured as such. Developers can also
  39. reference static files and templates between apps, thus easing inter-application data exchange.
  40. All apps in a project are loaded by default if INSTALLED_APPS is not configured in
  41. the configuration file. All separate app configuration files are automatically processed at
  42. project startup.
  43. * URL Mapping
  44. * Flexiable and powerful URL mapping. Uliweb uses werkzeug's routing module.
  45. User can easily define a URL, which in turn can be easily bound with a view function.
  46. URLs can also be created reversely according to the view function name. It supports
  47. argument definitions in URLs and default URL mapping to a
  48. view function.
  49. * View and Template
  50. * View templates can be automatically applied. If you return a dict variable from
  51. view function, Uliweb will automatically try to match and apply a template according
  52. to the view function name.
  53. * Environment execution mode. Each view function will be run in an environment,
  54. which eliminates the need to write many import statements. Plus there are already many
  55. objects that can be used directly, for example: request, response, etc. This is DRY and saves a lot of coding
  56. * Developers can directly use Python code in a template, the Python code does not neede to be indented
  57. as long as a pass statement is added at the end of each code block.
  58. Uliweb also supports child template inclusion and inheritance.
  59. * ORM
  60. * Uliorm is based on SQLAlchemy package, so you can use Model layer and SQL
  61. expression layer both.
  62. * Uliorm integrates with alembic package, you can use it to migirate database
  63. automatically.
  64. * I18n
  65. * Can be used in python and template files.
  66. * Browser language and cookie settings are supported including automatic language switching.
  67. * Provides a command line tool that developers can use to extract .po files.
  68. This can happen either at the app level or project level process. It can automatically merge .pot files to existing
  69. .po files.
  70. * Extension
  71. * Dispatch extension. This is a dispatch processing mechanism that utilizes different
  72. types of dispatch points. So you can write procedures to carry out
  73. special processes and bind them to these dispatch points. For example, database
  74. initicalization, I18n process initialization, etc.
  75. * middleware extension. It's similar to Djangos. You can configure it in configuration
  76. files. Each middleware can process the request and response objets.
  77. * Special function calls in the views module initial process. If you write a special
  78. function named `__begin__`, it'll be processed before any view function can be processed,
  79. this allows developers to do some module level processing at that point, for example:
  80. check the user authentication, etc.
  81. * Command Line Tools
  82. * Creates project, creates apps, and include the basic essential directory
  83. structure, files and code.
  84. * Export static files, you can export all available apps' static files to a
  85. special directory. Also supports css and js combinition and compress process.
  86. * Startup a development web server thats supports debugging and autoreload.
  87. * Apps can also have its own command line tools. For example: orm, auth, etc.
  88. * Deployment
  89. * Supports mod_wsgi in Apache.
  90. * Supports uwsgi.
  91. * Development
  92. * Provide a development server, and can be automatically reload when some
  93. module files are modified.
  94. * Enhanced debugging, you can check the error traceback, template debugging is also supported.
  95. ## Commuity
  96. * Mailing List: https://groups.google.com/forum/#!forum/uliweb
  97. ## Links
  98. * **Uliweb** Project Homepage https://github.com/limodou/uliweb
  99. * **Uliweb-doc** Documentation Project http://github.com/limodou/uliweb-doc
  100. * **Uliweb-doc Online** Document http://limodou.github.com/uliweb-doc/
  101. * **plugs** Uliweb Apps Collection Project https://github.com/limodou/plugs
  102. ![LOGO](https://raw.github.com/limodou/uliweb/master/logos/uliweb_logo_small.png)