简单易用的Python Web Framework
项目最近一次提交：5 年多 前 9eb651273
|.gitignore||2011-09-11 11:15:14||limodou||add .gitignore||bd36e24d|
|AUTHORS.md||2012-09-08 23:04:10||limodou||Add CSRF support thanks for Damon||591ced3f|
|COPYLEFT.txt||2011-08-23 17:34:53||limodou||change AUTO_CREATE default value to F...||bc307c19|
|setup.cfg||2011-08-23 17:34:53||limodou||change AUTO_CREATE default value to F...||bc307c19|
|setup.py||2012-05-27 08:27:24||limodou||fix readme||4df766f4|
Uliweb is a Python based web framework.
This project was created and lead by Limodou firstname.lastname@example.org.
Uliweb is released under BSD license.
Uliweb was not created totally from scratch. It uses some modules created by other developers, for example:
I also referenced some code from other web frameworks, for example:
I also constructed a few new "wheels" myself. For example:
Uliweb organizes a project with small apps. Each app can have its own configuration file(settings.ini), template directory, and static directory. Existing apps can be easily reused, but are treated as a compound. web application project if configured as such.
Developers can also reference static files and templates between apps, thus easing inter-application data exchange. All apps in a project are loaded by default if INSTALLED_APPS is not configured in the configuration file. All separate app configuration files are automatically processed at project startup.
Flexible and powerful URL mapping. Uliweb uses werkzeug's routing module. User can easily define a URL, which in turn can be easily bound with a view function. URLs can also be created reversely according to the view function name. It supports argument definitions in URLs and default URL mapping to a view function.
View and Template
View templates can be automatically applied. If you return a dict variable from view function, Uliweb will automatically try to match and apply a template according to the view function name. And now, Uliweb also support Class View style. I hope you can enjoy it.
Environment execution mode
Each view function will be run in an environment, which eliminates the need to write many import statements. Plus there are already many objects that can be used directly, for example: request, response, etc. This is DRY and saves a lot of coding
Developers can directly use Python code in a template, the Python code does not neede to be indented as long as a pass statement is added at the end of each code block. Uliweb also supports child template inclusion and inheritance.
Uliorm is the default ORM module but not configured by default. Developers are free to use any ORM module as preferred. Uliorm supports basicly orm functionalities, and also support multiple databases. The important thing is Uliorm has designned a configurable settings so that user can easy config models even replace old model with new one.
Can be used in python and template files. Browser language and cookie settings are supported including automatic language switching. Provides a command line tool that developers can use to extract .po files. This can happen either at the app level or project level process. It can automatically merge .pot files to existing .po files.
Dispatch extension. This is a dispatch processing mechanism that utilizes different types of dispatch points. So you can write procedures to carry out special processes and bind them to these dispatch points. For example, database initicalization, I18n process initialization, etc.
It's similar to Djangos. You can configure it in configuration files. Each middleware can process the request and response objets.
Special function calls in the views module initial process. If you write a special function named begin, it'll be processed before any view function can be processed, this allows developers to do some module level processing at that point, for example: check the user authentication, etc.
Command Line Tools
Provide a development server, and can be automatically reload when some module files are modified.
static file serving support.
Uliweb supports static file access directly, and it can also process HTTP_IF_MODIFIED_SINCE and return static file content in trunk.