Pythonic web.py
===========
Making `web.py` request handling more pythonic.
```python
import lessweb
def hello(ctx, name):
if not name:
name = 'World'
return 'Hello, ' + name + '!'
urls = ('GET', '/(.*)', hello)
app = lessweb.application(urls, locals())
```
All those magical web.* are now available in context variable.
```python
def hello(ctx):
user_data = ctx.input(color=[])
if 'color' not in ctx.cookies and not user_data.color:
ctx.setcookies('color', 'blue')
return 'Hello, from ' + ctx.env.get('REMOTE_HOST') or ctx.ip
urls = ('GET', '/', hello)
import lessweb
app = lessweb.application(urls, locals())
```
Only a part of web.py request handling has been masked with `less.web`. Rest of them are required to
do what they did already.
```python
import web
import lessweb
def redirect_to_referer(ctx):
referer = ctx.env.get('HTTP_REFERER', 'http://webpy.org')
raise web.seeother(referer)
urls = ('GET', '/', redirect_to_referer)
app = lessweb.application(urls, locals())
```
It's implemented as a tiny pythonic wrapper around `web.py` request handling.
The idea is to allow all request/response manipulation through `ctx`(context) of the handler function rather than module(`web`) level functions. `ctx` is basically `web.ctx` of `web.py`, which is already used to set and access request context. It also wraps other module level functionality of `web.py` such as `header`, `input`, `cookies`, `sessions` to yield a more pythonic interface.
To use sessions you have to configure session store in config as follows.
```python
web.config.sessionstore = web.session.DiskStore('sessions') # for disk store, other stores can be used similarly.
```
===========
Making `web.py` request handling more pythonic.
```python
import lessweb
def hello(ctx, name):
if not name:
name = 'World'
return 'Hello, ' + name + '!'
urls = ('GET', '/(.*)', hello)
app = lessweb.application(urls, locals())
```
All those magical web.* are now available in context variable.
```python
def hello(ctx):
user_data = ctx.input(color=[])
if 'color' not in ctx.cookies and not user_data.color:
ctx.setcookies('color', 'blue')
return 'Hello, from ' + ctx.env.get('REMOTE_HOST') or ctx.ip
urls = ('GET', '/', hello)
import lessweb
app = lessweb.application(urls, locals())
```
Only a part of web.py request handling has been masked with `less.web`. Rest of them are required to
do what they did already.
```python
import web
import lessweb
def redirect_to_referer(ctx):
referer = ctx.env.get('HTTP_REFERER', 'http://webpy.org')
raise web.seeother(referer)
urls = ('GET', '/', redirect_to_referer)
app = lessweb.application(urls, locals())
```
It's implemented as a tiny pythonic wrapper around `web.py` request handling.
The idea is to allow all request/response manipulation through `ctx`(context) of the handler function rather than module(`web`) level functions. `ctx` is basically `web.ctx` of `web.py`, which is already used to set and access request context. It also wraps other module level functionality of `web.py` such as `header`, `input`, `cookies`, `sessions` to yield a more pythonic interface.
To use sessions you have to configure session store in config as follows.
```python
web.config.sessionstore = web.session.DiskStore('sessions') # for disk store, other stores can be used similarly.
```
Metadata
Release files for lessweb.py 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lessweb.py-0.1.1.tar.gz | 2.0 kB | Details |
Release files / lessweb.py-0.1.1.tar.gz
| Download URL | lessweb.py-0.1.1.tar.gz |
|---|---|
| Size | 2.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f4f143d76aa8ffa0188d0111ffcf78437b0623fd14e4bbdf6aed6196802a1382
|
|
BLAKE2b-256 checksum How to use checksums |
374a27711ec1657d602b928916f05c9ca48b4d7a6b17962f8a3d40b2b986fb92
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |