Skip to main content

Support Jinja2 templates for Muffin Framework

Project description

Muffin-Jinja2 – Support Jinja2 templates for Muffin Framework

Tests Status PYPI Version

Requirements

  • python >= 3.7

Installation

Muffin-Jinja2 should be installed using pip:

pip install muffin-jinja2

Usage

import muffin
import muffin_jinja2

# Create Muffin Application
app = muffin.Application('example')

# Initialize the plugin
# As alternative: jinja2 = Jinja2(app, **options)
jinja2 = muffin_jinja2.Plugin()
jinja2.setup(app, template_folders=['src/templates'])

# Use it inside your handlers
@app.route('/')
async def index(request):
    context = {'var': 42}
    return await jinja2.render('index.html', **context)

Options

Name

Default value

Description

auto_reload

False

Auto reload changed templates

cache_size

50

Cache templates

extensions

None

Enable Jinja2 Extensions (None | list)

loader

FileSystemLoader

Template loader

encoding

utf-8

Default encoding for file loader

template_folders

['templates']

List of template folders

You are able to provide the options when you are initiliazing the plugin:

jinja2.init(app, template_folders=['src/templates'], auto_reload=True)

Or setup it inside Muffin.Application config using the jinja2_ prefix for example:

JINJA2_AUTO_RELOAD = True

JINJA2_TEMPLATE_FOLDERS = ['tmpls']

Muffin.Application configuration options are case insensitive

Tunning

# Register custom context processor
# could be a function/coroutine
@jinja2.context_processor
def custom_context():
    return { 'VAR': 'VALUE' }

# Register a function into global context
@jinja2.register
def sum(a, b):
    return a + b

# Register a function with a different name
@jinja2.register('div')
def mod(a, b):
    return a // b

# Register a filter
@jinja2.filter
def test(value, a, b=None):
    return a if value else b

# Register a filter with a different name
@jinja2.filter('bool')
def boolean(value):
    return bool(value)

@app.route('/')
async def index(request):
    """ Check for user is admin. """
    local_context = {'key': 'value'}
    return await jinja2.render('index.html', **local_context)

Bug tracker

If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/muffin-jinja2/issues

Contributing

Development of Muffin-Jinja2 happens at: https://github.com/klen/muffin-jinja2

Contributors

  • klen (Kirill Klenov)

License

Licensed under a MIT license.

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

muffin-jinja2-1.0.0.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

muffin_jinja2-1.0.0-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file muffin-jinja2-1.0.0.tar.gz.

File metadata

  • Download URL: muffin-jinja2-1.0.0.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

File hashes

Hashes for muffin-jinja2-1.0.0.tar.gz
Algorithm Hash digest
SHA256 fc15d65cdedb37926b65421c9e3ae0fefe1fb25f294f9d26302cc29bec9f9006
MD5 c22bb6e94639c3a1273b4115a44778ae
BLAKE2b-256 20ee725b101c9d6a6d8b9bc7e7bb617591abda3dede8e6def515504db5047534

See more details on using hashes here.

File details

Details for the file muffin_jinja2-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: muffin_jinja2-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 5.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

File hashes

Hashes for muffin_jinja2-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 005a68fc2435182909aafd255e2416574493bba613cfd763c08d3dc0a2f6b790
MD5 8c1f265a465a1b2e872a27d8017ad6ce
BLAKE2b-256 a37bee4c6cc73b9db5cb971ed8d1724ffd2f0f39996a708872a3718f3bbf2b1b

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