Adds integration of the Chameleon template language to Flask and Quart.
Project description
chameleon-flask
Adds integration of the Chameleon template language to Flask and Quart.
Installation
Simply pip install chameleon_flask
.
Usage
This is easy to use. Just create a folder within your web app to hold the templates such as:
├── app.py
├── views.py
│
├── templates
│ ├── home
│ │ └── index.pt
│ └── shared
│ └── layout.pt
In the app startup, tell the library about the folder you wish to use:
import os
from pathlib import Path
import chameleon_flask
dev_mode = True
BASE_DIR = Path(__file__).resolve().parent
template_folder = str(BASE_DIR / 'templates')
chameleon_flask.global_init(template_folder, auto_reload=dev_mode)
Then just decorate the Flask or Quart view methods (works on sync and async methods):
@app.get('/async')
@chameleon_flask.template('async.pt')
async def async_world():
await asyncio.sleep(.01)
return {'message': "Let's go async Chameleon!"}
The view method should return a dict
to be passed as variables/values to the template.
If a flask.Response
is returned, the template is skipped and the response along with status_code and
other values is directly passed through. This is common for redirects and error responses not meant
for this page template. Otherwise the dictionary is used to render async.pt
in this example.
Friendly 404s and errors
A common technique for user-friendly sites is to use a custom HTML page for 404 responses.
This library has support for friendly 404 pages using the chameleon_flask.not_found()
function.
Here's an example:
@app.get('/catalog/item/{item_id}')
@chameleon_flask.template('catalog/item.pt')
async def item(item_id: int):
item = service.get_item_by_id(item_id)
if not item:
chameleon_flask.not_found()
return item.dict()
This will render a 404 response with using the template file templates/errors/404.pt
.
You can specify another template to use for the response, but it's not required.
An example
See the example/example_app.py
file for a working example to play with.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file chameleon_flask-0.0.1.tar.gz
.
File metadata
- Download URL: chameleon_flask-0.0.1.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.4.30
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85725850aa4d8fe70e2b58eb225b9a2a7306e83083ac8ed6759b0a4d651cbe25 |
|
MD5 | ee176e4fee8ff0513e85c854f9a0ea69 |
|
BLAKE2b-256 | bd5c6b884933bde35639ca1ed3788dda19b0933ca8c1cfc3bf69f7d932217e9b |
File details
Details for the file chameleon_flask-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: chameleon_flask-0.0.1-py3-none-any.whl
- Upload date:
- Size: 5.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.4.30
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d55f0c47c603589dc46b48d2ebad0c565ff6ecdfa669ee770779fb608729bb87 |
|
MD5 | 21c82e237d9e3cda80e18e62f02a0002 |
|
BLAKE2b-256 | e31adf0390a8d9ff685f07bbd7634e6822ffac195e3b09097c04fcc85bf1fc63 |