muffin-jinja2

1.8.1last stable release 8 months ago
Complexity Score
Low
Open Issues
0
Dependent Projects
4
Weekly Downloadsglobal
859

License

  • MIT
    • Yesattribution
    • Permissivelinking
    • Permissivedistribution
    • Permissivemodification
    • Nopatent grant
    • Yesprivate use
    • Permissivesublicensing
    • Notrademark grant

Downloads

Readme

Muffin-Jinja2 #############

.. _description:

Muffin-Jinja2 – Support Jinja2 templates for Muffin_ Framework

.. _badges:

.. image:: https://github.com/klen/muffin-jinja2/workflows/tests/badge.svg :target: https://github.com/klen/muffin-jinja2/actions :alt: Tests Status

.. image:: https://img.shields.io/pypi/v/muffin-jinja2 :target: https://pypi.org/project/muffin-jinja2/ :alt: PYPI Version

.. _contents:

.. contents::

.. _requirements:

Requirements

  • python >= 3.9

.. _installation:

Installation

Muffin-Jinja2 should be installed using pip: ::

pip install muffin-jinja2

.. _usage:

Usage

.. code-block:: python

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:

.. code-block:: python

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

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

.. code-block:: python

JINJA2_AUTO_RELOAD = True

JINJA2_TEMPLATE_FOLDERS = [‘tmpls’]

Muffin.Application configuration options are case insensitive

Tunning

.. code-block:: python

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

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

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

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

# Register a filter with a different name
@jinja2.add_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)

.. _bugtracker:

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:

Contributing

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

Contributors

  • klen_ (Kirill Klenov)

.. _license:

License

Licensed under a MIT license_.

.. _links:

.. _klen: https://github.com/klen .. _Muffin: https://github.com/klen/muffin

.. _MIT license: http://opensource.org/licenses/MIT

Dependencies

CVE IssuesActive
0
Scorecards Score
3.60
Test Coverage
No Data
Follows Semver
Yes
Github Stars
11
Dependenciestotal
2
DependenciesOutdated
0
DependenciesDeprecated
0
Threat Modelling
No
Repo Audits
No

Learn how to distribute muffin-jinja2 in your own private PyPI registry

pip install muffin-jinja2
Processing...
Done

56 Releases

PyPI on Cloudsmith

Getting started with PyPI on Cloudsmith is fast and easy.