Project

General

Profile

Wiki » History » Version 20

Arjen Pander, 2015-03-10 15:31

1 1 Elmer de Looff
h1. µWeb
2 8 Jan Klopper
3 8 Jan Klopper
!>uweb_inernals.png!
4 1 Elmer de Looff
5 1 Elmer de Looff
µWeb is a Python software package designed to provide a flexible, lightweight, but powerful base to build web applications on top of. It can tie in to mod_python for Apache, or run stand-alone, using Python's included @BaseHTTPServer@ package.
6 1 Elmer de Looff
7 17 Elmer de Looff
µWeb provides an "MVP":http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter like environment, built around three core philosophies:
8 11 Jan Klopper
# as little "boilerplate":http://en.wikipedia.org/wiki/Boilerplate_code as possible;
9 1 Elmer de Looff
# as little Magic™ as possible;
10 1 Elmer de Looff
# and separation by convention, not brute force.
11 3 Elmer de Looff
12 20 Arjen Pander
These philosophies overlap more than a little with the "Zen of Python":http://www.python.org/dev/peps/pep-0020/#content, which is not a coincidence.
13 1 Elmer de Looff
14 12 Elmer de Looff
h2. Installation
15 12 Elmer de Looff
16 12 Elmer de Looff
Details on how to install µWeb can be found on the [[installation]] page.
17 12 Elmer de Looff
18 19 Elmer de Looff
h2. Management
19 19 Elmer de Looff
20 19 Elmer de Looff
Initializing new projects, starting and stopping development servers and creating your Apache configurations can all be done with the [[Application|µWeb management application]].
21 19 Elmer de Looff
22 1 Elmer de Looff
h2. Components
23 1 Elmer de Looff
24 1 Elmer de Looff
µWeb is a framework that consists of mix of components building from a low-level standalone server on top of @BaseHTTPServer@ to a refined template parser and database abstraction model.
25 1 Elmer de Looff
26 1 Elmer de Looff
h3. Request Router
27 1 Elmer de Looff
28 5 Elmer de Looff
The *[[Request Router]]* is the entry point of the µWeb framework. Any HTTP request seen by the server is passed through here, from which it is delegated to the proper handler.
29 1 Elmer de Looff
30 1 Elmer de Looff
31 17 Elmer de Looff
h3. PageMaker and Response (_Presenter_)
32 1 Elmer de Looff
33 17 Elmer de Looff
*[[PageMaker]]* provides the presenter part of the MVP approach. Each web request ends on a specific method of the PageMaker. From here, request information can be viewed (cookies, query arguments and POST data), and databases used to gather data to fulfill the request. Upon completion, a raw string or a more complex *[[Response]]* object may be returned.
34 1 Elmer de Looff
35 1 Elmer de Looff
h3. TemplateParser (_View_)
36 1 Elmer de Looff
37 5 Elmer de Looff
Templates allow for a separation of presentation and logic, allowing you to move large parts of HTML or other output to a separate file. The *[[TemplateParser]]* replaces all the tags left in the template with the given output, which can be simple variables, or the use of multi-level database objects. Also, as an added benefit, the default output of TemplateParser is such that any text fed into the template, is automatically made safe for HTML output.
38 1 Elmer de Looff
39 1 Elmer de Looff
h3. Database abstraction (_Model_)
40 1 Elmer de Looff
41 5 Elmer de Looff
The *[[Model|µWeb database model]]* provides a Record class which provides for a smart interaction with your database tables. Creating a  simple Record subclass for each of your (main) database tables allows you:
42 1 Elmer de Looff
* to load database record by their primary key value;
43 1 Elmer de Looff
* automatic retrieval of 1-1 or n-1 relations;
44 1 Elmer de Looff
* creating, updating or deleting of records.
45 1 Elmer de Looff
46 1 Elmer de Looff
h3. HTTP Request abstraction
47 1 Elmer de Looff
48 5 Elmer de Looff
The *[[Request]]* class ensures that, no matter the server that accepts the request (Apache or BaseHTTPServer), the various parts further on in the framework have access to header information, query arguments, cookies and POST data in a structured manner. More information on the client, server and other environment variables is also available here.
49 1 Elmer de Looff
50 1 Elmer de Looff
h3. µWeb Standalone Server
51 1 Elmer de Looff
52 5 Elmer de Looff
*[[Standalone]]* is a module that allows µWeb to function outside the presence of Apache and mod_python. This is easy for local testing, or low volume websites.
53 9 Jan Klopper
54 9 Jan Klopper
h3. Common errors when building uweb projects
55 9 Jan Klopper
56 9 Jan Klopper
[[FAQ|As with any software package, some things tend to go awry for most new users, so we've made a list of them, and their solution.]]