Mother is a framework written in python and based on twisted. It is designed to make developpement of web applications easy and fast.
- It provides following functionalities among others:
simple url mapping to code,
handle multi content-types (html, JSON, …),
integration with Tentacles ORM,
allow use of templating tools (currently, only Mako is supported)
Example:
UUID = '7c772000-8f12-4594-9730-9e4de53d55d1'
from mother import routing
from mother.callable import callback, Callable
from mother.template import Static, Template
@callback(url=routing.ROOT)
def root(**kwargs):
return """
<html>
<head>
<title>Welcome to Mother Sample Application</title>
</head>
<body>
This is the homepage of <b>Mother Sample Application</b>.<br/>
<br>
<em>You are welcome to watch my source code to see how to build your first
<strong>Mother</strong> application</em>.
</body>
</html>
"""
@callback(url='/foo', content_type='text/plain')
def foo(**kwargs):
return 'foo:: plain text'
@callback(url='/foo', content_type='application/json')
def foo(**kwargs):
return ['foo', 'json tree']
@callback(url='/foo', content_type='text/html')
def foo(**kwargs):
return '<html><body><b>foo</b>:: html content</body></html>'
@callback
def bar(age, **args):
try:
age = int(age)
except:
return routing.HTTP_404('age MUST be integer')
return 'the captain is %d years old' % age
class Captain(Callable):
def __init__(self, **kwargs):
super(Captain, self).__init__(**kwargs)
self._age = 54
# special methods GET, POST, PUT, DELETE are directly mapped to '/sample/captain' url
def GET(self, **kwargs):
return 'Captain::GET'
# You can also expose non-special class/instance methods with the callback modified
# Here we learn a new @callback option, named 'method'
#
@callback
def age(self, **kwargs):
return self._age
# Here we discover a new @callback argument, named 'method'
# taking either a string among 'GET', 'POST','PUT','DELETE' or a list of these
#
# This argument set HTTP method(s) callback is accessible through (default is GET)
@callback(url='/setage', method='POST')
def age_post(self, age, **kwargs):
try:
self._age = int(age)
except:
return routing.HTTP_404('age MUST be integer')
return routing.HTTP_200('')
@callback
def hello(**kwargs):
return 'hello'
URLS = {
# expose function
'/hel-lo' : hello,
# expose static content (directory)
'/static' : Static('static-content/'),
# expose template file
# NOTES
# . template files MUST be stored in a templates/ sub-directory
# . Mako is the only available template engine at present
'/template' : Template('sample.html', title='template sample title',
content="""You\'re viewing a template sample page, rendered with <em>Mako</em>""")
}
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file mother-webapps-framework-0.1.0.tar.gz.
File metadata
- Download URL: mother-webapps-framework-0.1.0.tar.gz
- Upload date:
- Size: 42.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bef5a88e61161a931d7ee2e90a00450b26f3b1a92ce0924754b60ffa584834b6
|
|
| MD5 |
ccc6cc256f2baff79a253d71a7fc8d5f
|
|
| BLAKE2b-256 |
4a3c09875a9549c688d9893725c4e0bc7c08bbe032cb1641a051f158ef486bfa
|