Skip to main content

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

chameleon_flask-0.0.5.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

chameleon_flask-0.0.5-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file chameleon_flask-0.0.5.tar.gz.

File metadata

  • Download URL: chameleon_flask-0.0.5.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.1

File hashes

Hashes for chameleon_flask-0.0.5.tar.gz
Algorithm Hash digest
SHA256 a0382a7034a1364bba221a4af55899e3689c975e2d831fc65d6ba03053d17aa5
MD5 26ffc1d03feb73a7340f8dee7b9793dd
BLAKE2b-256 ed86e3086f6e2d905aa2a4f6d756525819e7af87c3b307e777abbfd09ea4d836

See more details on using hashes here.

File details

Details for the file chameleon_flask-0.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for chameleon_flask-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f4847d1d74c6e15e406bf8f5340928816939bd812d7e3f90dbeaf6e007aa47e8
MD5 be0551abae43b77be3527885d2cc258a
BLAKE2b-256 b4e874d8fa95a542036b4c14d4c921c6fd261a4e75ad0f4a86c06c4660d2ae4e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page