Support Jinja2 templates for Muffin Framework
Project description
Muffin-Jinja2 – Support Jinja2 templates for Muffin Framework
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
Release history Release notifications | RSS feed
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 muffin-jinja2-0.3.1.tar.gz
.
File metadata
- Download URL: muffin-jinja2-0.3.1.tar.gz
- Upload date:
- Size: 5.3 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b8e45e6740cea8361b9b3324066455d02026a92f45ea0d054a091a88a55e481 |
|
MD5 | 2a4b0f59ad66187c985c702d08ebe89c |
|
BLAKE2b-256 | 72602233b539898bc1ec3da3e5351e5b7e351d9f9b4c7b68ab3417e69a9ba211 |
File details
Details for the file muffin_jinja2-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: muffin_jinja2-0.3.1-py3-none-any.whl
- Upload date:
- Size: 4.8 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb4dd0865226d108db1261087b342101a8e89ae6a379d5f16302cbab272fada3 |
|
MD5 | 72225f71bc8807f3db871cb77870ca0a |
|
BLAKE2b-256 | 25633a10ceb278327504ad9ec24d79d759bdebc2409d22e38bb0b0c07fc20184 |