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.8

Installation

Muffin-Jinja2 should be installed using pip:

pip install muffin-jinja2

Usage

from muffin import Application
from muffin_jinja2 import Plugin as Jinja2

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

# Initialize the plugin
# As alternative: jinja2 = Jinja2(app, **options)
jinja2 = Jinja2()
jinja2.init(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

Format: Name – Description (default value)

auto_reload – Auto reload changed templates (False)

cache_size – Cache templates (50)

extensions – Enable Jinja2 Extensions (None)

loader – Template loader (FileSystemLoader)

encoding – Default encoding for file loader (utf-8)

template_folders – List of template folders ([‘templates’])

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:

JINJA2_AUTO_RELOAD = True

JINJA2_TEMPLATE_FOLDERS = ['tmpls']

Muffin.Application configuration options are case insensetive

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-0.4.0.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

muffin_jinja2-0.4.0-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: muffin-jinja2-0.4.0.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.9.0

File hashes

Hashes for muffin-jinja2-0.4.0.tar.gz
Algorithm Hash digest
SHA256 6cd70cf6f0e293303f53e7ad9f390fdaff08db415398619af044c6bc6017ce0e
MD5 cec5e92829c85f9739b6b964c8e9e02a
BLAKE2b-256 1ae1350cc70476afd391f43b25581ab7bfd1ebdf3aa858a7b4201986aad9144e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: muffin_jinja2-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.9.0

File hashes

Hashes for muffin_jinja2-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cf472fe3f9eaed812da9c7a650f409613487a5ce77cec1ce1d0ab4d682db6920
MD5 fbb819e6982cadbf92d4e74ecd84c23b
BLAKE2b-256 830409d7f37e7c705b21df8f29263993998cf7efc47216376d953f89c2b1d8a4

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