aiohttp-jinja2


Nameaiohttp-jinja2 JSON
Version 1.6 PyPI version JSON
download
home_pagehttps://github.com/aio-libs/aiohttp_jinja2/
Summaryjinja2 template renderer for aiohttp.web (http server for asyncio)
upload_time2023-11-18 15:30:52
maintainer
docs_urlNone
authorAndrew Svetlov
requires_python>=3.8
licenseApache 2
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            aiohttp_jinja2
==============
.. image:: https://github.com/aio-libs/aiohttp-jinja2/workflows/CI/badge.svg
    :target: https://github.com/aio-libs/aiohttp-jinja2/actions?query=workflow%3ACI
.. image:: https://codecov.io/gh/aio-libs/aiohttp-jinja2/branch/master/graph/badge.svg
    :target: https://codecov.io/gh/aio-libs/aiohttp-jinja2
.. image:: https://img.shields.io/pypi/v/aiohttp-jinja2.svg
    :target: https://pypi.python.org/pypi/aiohttp-jinja2
.. image:: https://readthedocs.org/projects/aiohttp-jinja2/badge/?version=latest
    :target: http://aiohttp-jinja2.readthedocs.io/en/latest/?badge=latest


jinja2_ template renderer for `aiohttp.web`__.


.. _jinja2: http://jinja.pocoo.org

.. _aiohttp_web: https://aiohttp.readthedocs.io/en/latest/web.html

__ aiohttp_web_

Installation
------------
Install from PyPI::

    pip install aiohttp-jinja2


Developing
----------

Install requirement and launch tests::

    pip install -r requirements-dev.txt
    pytest tests


Usage
-----

Before template rendering you have to setup *jinja2 environment* first:

.. code-block:: python

    app = web.Application()
    aiohttp_jinja2.setup(app,
        loader=jinja2.FileSystemLoader('/path/to/templates/folder'))

Import:

.. code-block:: python

    import aiohttp_jinja2
    import jinja2

After that you may to use template engine in your *web-handlers*. The
most convenient way is to decorate a *web-handler*.

Using the function based web handlers:

.. code-block:: python

    @aiohttp_jinja2.template('tmpl.jinja2')
    def handler(request):
        return {'name': 'Andrew', 'surname': 'Svetlov'}

Or for `Class Based Views
<https://aiohttp.readthedocs.io/en/stable/web_quickstart.html#class-based-views>`:

.. code-block:: python

    class Handler(web.View):
        @aiohttp_jinja2.template('tmpl.jinja2')
        async def get(self):
            return {'name': 'Andrew', 'surname': 'Svetlov'}


On handler call the ``aiohttp_jinja2.template`` decorator will pass
returned dictionary ``{'name': 'Andrew', 'surname': 'Svetlov'}`` into
template named ``tmpl.jinja2`` for getting resulting HTML text.

If you need more complex processing (set response headers for example)
you may call ``render_template`` function.

Using a function based web handler:

.. code-block:: python

    async def handler(request):
        context = {'name': 'Andrew', 'surname': 'Svetlov'}
        response = aiohttp_jinja2.render_template('tmpl.jinja2',
                                                  request,
                                                  context)
        response.headers['Content-Language'] = 'ru'
        return response

Or, again, a class based view:

.. code-block:: python

    class Handler(web.View):
        async def get(self):
            context = {'name': 'Andrew', 'surname': 'Svetlov'}
            response = aiohttp_jinja2.render_template('tmpl.jinja2',
                                                      self.request,
                                                      context)
            response.headers['Content-Language'] = 'ru'
            return response


License
-------

``aiohttp_jinja2`` is offered under the Apache 2 license.


=======
CHANGES
=======

.. towncrier release notes start

1.6 (2023-11-18)
================

- Switch to ``aiohttp.web.AppKey``, and deprecate the old 'static_root_url' key.
- Drop Python 3.7, add Python 3.12.

1.5.1 (2023-02-01)
==================

- Add support for Python 3.11.
- Drop support for decorating non-async functions with @template (deprecated since 0.16).

1.5 (2021-08-21)
================

- Drop support for jinaj2 <3. Add support for 3+.
- Don't require ``typing_extensions`` on Python 3.8+.

1.4.2 (2020-11-23)
==================

- Add CHANGES.rst to MANIFEST.in and sdist #402

1.4.1 (2020-11-22)
==================

- Document async rendering functions #396

1.4.0 (2020-11-12)
==================

- Fix type annotation for ``context_processors`` argument #354

- Bump the minimal supported ``aiohttp`` version to 3.6.3 to avoid problems
  with uncompatibility between ``aiohttp`` and ``yarl``

- Add async rendering support #393

1.3.0 (2020-10-30)
==================

- Remove Any from template annotations #343

- Fix type annotation for filters in ``aiohttp_jinja2.setup`` #330

- Drop Python 3.5, support Python 3.9


1.2.0 (2019-10-21)
==================

- Add type hints #285

1.1.1 (2019-04-25)
==================

- Bump minimal supported ``jinja2`` version to 2.10.1 to avoid security vulnerability problem.


1.1.0 (2018-09-05)
==================

- Bump minimal supported ``aiohttp`` version to 3.2

- Use ``request.config_dict`` for accessing ``jinja2`` environment. It
  allows to reuse jinja rendering engine from parent application.

1.0.0 (2018-03-12)
==================

- Allow context_processors to compose from parent apps #195

0.17.0 (2018-03-12)
===================

- Auto-cast ``int`` values in ``url()`` jinja function to ``str`` #191

0.16.0 (2018-02-12)
===================

- Pin to aiohttp 3.0+

- Deprecate non-async handlers support

0.15.0 (2018-01-30)
===================

- Upgrade middleware to new style from aiohttp 2.3+ #182

- Autoescape all templates by default #179


0.13.0 (2016-12-14)
===================

- Avoid subtle errors by copying context processor data #51

0.12.0 (2016-12-02)
===================

- Add autodeploy script #46

0.11.0 (2016-11-24)
===================

- Add jinja2 filters support #41

0.10.0 (2016-10-20)
===================

- Rename package to aiohttp-jinja2 #31

0.9.0 (2016-09-26)
==================

- Fix reason parameter in HTTPInternalServerError when template is not
  found #33

0.8.0 (2016-07-12)
==================

- Add ability to render template without context #28

0.7.0 (2015-12-30)
==================

- Add ability to decorate class based views (available in aiohttp 0.20) #18

- Upgrade aiohttp requirement to version 0.20.0+

0.6.2 (2015-11-22)
==================

- Make app_key parameter from render_string coroutine optional

0.6.0 (2015-10-29)
==================

- Fix a bug in middleware (missed coroutine decorator) #16

- Drop Python 3.3 support (switched to aiohttp version v0.18.0)

- Simplify context processors initialization by adding parameter to `setup()`

0.5.0 (2015-07-09)
==================

- Introduce context processors #14

- Bypass StreamResponse #15

0.4.3 (2015-06-01)
==================

- Fix distribution building: add manifest file

0.4.2 (2015-05-21)
==================

- Make HTTPInternalServerError exceptions more verbose on console
  output

0.4.1 (2015-04-05)
==================

- Documentation update

0.4.0 (2015-04-02)
==================

- Add `render_string` method

0.3.1 (2015-04-01)
==================

- Don't allow non-mapping context

- Fix tiny documentation issues

- Change the library logo

0.3.0 (2015-03-15)
==================

- Documentation release

0.2.1 (2015-02-15)
==================

- Fix `render_template` function

0.2.0 (2015-02-05)
==================

- Migrate to aiohttp 0.14

- Add `status` parameter to template decorator

- Drop optional `response` parameter

0.1.0 (2015-01-08)
==================

- Initial release

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/aio-libs/aiohttp_jinja2/",
    "name": "aiohttp-jinja2",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "",
    "author": "Andrew Svetlov",
    "author_email": "andrew.svetlov@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/e6/39/da5a94dd89b1af7241fb7fc99ae4e73505b5f898b540b6aba6dc7afe600e/aiohttp-jinja2-1.6.tar.gz",
    "platform": null,
    "description": "aiohttp_jinja2\n==============\n.. image:: https://github.com/aio-libs/aiohttp-jinja2/workflows/CI/badge.svg\n    :target: https://github.com/aio-libs/aiohttp-jinja2/actions?query=workflow%3ACI\n.. image:: https://codecov.io/gh/aio-libs/aiohttp-jinja2/branch/master/graph/badge.svg\n    :target: https://codecov.io/gh/aio-libs/aiohttp-jinja2\n.. image:: https://img.shields.io/pypi/v/aiohttp-jinja2.svg\n    :target: https://pypi.python.org/pypi/aiohttp-jinja2\n.. image:: https://readthedocs.org/projects/aiohttp-jinja2/badge/?version=latest\n    :target: http://aiohttp-jinja2.readthedocs.io/en/latest/?badge=latest\n\n\njinja2_ template renderer for `aiohttp.web`__.\n\n\n.. _jinja2: http://jinja.pocoo.org\n\n.. _aiohttp_web: https://aiohttp.readthedocs.io/en/latest/web.html\n\n__ aiohttp_web_\n\nInstallation\n------------\nInstall from PyPI::\n\n    pip install aiohttp-jinja2\n\n\nDeveloping\n----------\n\nInstall requirement and launch tests::\n\n    pip install -r requirements-dev.txt\n    pytest tests\n\n\nUsage\n-----\n\nBefore template rendering you have to setup *jinja2 environment* first:\n\n.. code-block:: python\n\n    app = web.Application()\n    aiohttp_jinja2.setup(app,\n        loader=jinja2.FileSystemLoader('/path/to/templates/folder'))\n\nImport:\n\n.. code-block:: python\n\n    import aiohttp_jinja2\n    import jinja2\n\nAfter that you may to use template engine in your *web-handlers*. The\nmost convenient way is to decorate a *web-handler*.\n\nUsing the function based web handlers:\n\n.. code-block:: python\n\n    @aiohttp_jinja2.template('tmpl.jinja2')\n    def handler(request):\n        return {'name': 'Andrew', 'surname': 'Svetlov'}\n\nOr for `Class Based Views\n<https://aiohttp.readthedocs.io/en/stable/web_quickstart.html#class-based-views>`:\n\n.. code-block:: python\n\n    class Handler(web.View):\n        @aiohttp_jinja2.template('tmpl.jinja2')\n        async def get(self):\n            return {'name': 'Andrew', 'surname': 'Svetlov'}\n\n\nOn handler call the ``aiohttp_jinja2.template`` decorator will pass\nreturned dictionary ``{'name': 'Andrew', 'surname': 'Svetlov'}`` into\ntemplate named ``tmpl.jinja2`` for getting resulting HTML text.\n\nIf you need more complex processing (set response headers for example)\nyou may call ``render_template`` function.\n\nUsing a function based web handler:\n\n.. code-block:: python\n\n    async def handler(request):\n        context = {'name': 'Andrew', 'surname': 'Svetlov'}\n        response = aiohttp_jinja2.render_template('tmpl.jinja2',\n                                                  request,\n                                                  context)\n        response.headers['Content-Language'] = 'ru'\n        return response\n\nOr, again, a class based view:\n\n.. code-block:: python\n\n    class Handler(web.View):\n        async def get(self):\n            context = {'name': 'Andrew', 'surname': 'Svetlov'}\n            response = aiohttp_jinja2.render_template('tmpl.jinja2',\n                                                      self.request,\n                                                      context)\n            response.headers['Content-Language'] = 'ru'\n            return response\n\n\nLicense\n-------\n\n``aiohttp_jinja2`` is offered under the Apache 2 license.\n\n\n=======\nCHANGES\n=======\n\n.. towncrier release notes start\n\n1.6 (2023-11-18)\n================\n\n- Switch to ``aiohttp.web.AppKey``, and deprecate the old 'static_root_url' key.\n- Drop Python 3.7, add Python 3.12.\n\n1.5.1 (2023-02-01)\n==================\n\n- Add support for Python 3.11.\n- Drop support for decorating non-async functions with @template (deprecated since 0.16).\n\n1.5 (2021-08-21)\n================\n\n- Drop support for jinaj2 <3. Add support for 3+.\n- Don't require ``typing_extensions`` on Python 3.8+.\n\n1.4.2 (2020-11-23)\n==================\n\n- Add CHANGES.rst to MANIFEST.in and sdist #402\n\n1.4.1 (2020-11-22)\n==================\n\n- Document async rendering functions #396\n\n1.4.0 (2020-11-12)\n==================\n\n- Fix type annotation for ``context_processors`` argument #354\n\n- Bump the minimal supported ``aiohttp`` version to 3.6.3 to avoid problems\n  with uncompatibility between ``aiohttp`` and ``yarl``\n\n- Add async rendering support #393\n\n1.3.0 (2020-10-30)\n==================\n\n- Remove Any from template annotations #343\n\n- Fix type annotation for filters in ``aiohttp_jinja2.setup`` #330\n\n- Drop Python 3.5, support Python 3.9\n\n\n1.2.0 (2019-10-21)\n==================\n\n- Add type hints #285\n\n1.1.1 (2019-04-25)\n==================\n\n- Bump minimal supported ``jinja2`` version to 2.10.1 to avoid security vulnerability problem.\n\n\n1.1.0 (2018-09-05)\n==================\n\n- Bump minimal supported ``aiohttp`` version to 3.2\n\n- Use ``request.config_dict`` for accessing ``jinja2`` environment. It\n  allows to reuse jinja rendering engine from parent application.\n\n1.0.0 (2018-03-12)\n==================\n\n- Allow context_processors to compose from parent apps #195\n\n0.17.0 (2018-03-12)\n===================\n\n- Auto-cast ``int`` values in ``url()`` jinja function to ``str`` #191\n\n0.16.0 (2018-02-12)\n===================\n\n- Pin to aiohttp 3.0+\n\n- Deprecate non-async handlers support\n\n0.15.0 (2018-01-30)\n===================\n\n- Upgrade middleware to new style from aiohttp 2.3+ #182\n\n- Autoescape all templates by default #179\n\n\n0.13.0 (2016-12-14)\n===================\n\n- Avoid subtle errors by copying context processor data #51\n\n0.12.0 (2016-12-02)\n===================\n\n- Add autodeploy script #46\n\n0.11.0 (2016-11-24)\n===================\n\n- Add jinja2 filters support #41\n\n0.10.0 (2016-10-20)\n===================\n\n- Rename package to aiohttp-jinja2 #31\n\n0.9.0 (2016-09-26)\n==================\n\n- Fix reason parameter in HTTPInternalServerError when template is not\n  found #33\n\n0.8.0 (2016-07-12)\n==================\n\n- Add ability to render template without context #28\n\n0.7.0 (2015-12-30)\n==================\n\n- Add ability to decorate class based views (available in aiohttp 0.20) #18\n\n- Upgrade aiohttp requirement to version 0.20.0+\n\n0.6.2 (2015-11-22)\n==================\n\n- Make app_key parameter from render_string coroutine optional\n\n0.6.0 (2015-10-29)\n==================\n\n- Fix a bug in middleware (missed coroutine decorator) #16\n\n- Drop Python 3.3 support (switched to aiohttp version v0.18.0)\n\n- Simplify context processors initialization by adding parameter to `setup()`\n\n0.5.0 (2015-07-09)\n==================\n\n- Introduce context processors #14\n\n- Bypass StreamResponse #15\n\n0.4.3 (2015-06-01)\n==================\n\n- Fix distribution building: add manifest file\n\n0.4.2 (2015-05-21)\n==================\n\n- Make HTTPInternalServerError exceptions more verbose on console\n  output\n\n0.4.1 (2015-04-05)\n==================\n\n- Documentation update\n\n0.4.0 (2015-04-02)\n==================\n\n- Add `render_string` method\n\n0.3.1 (2015-04-01)\n==================\n\n- Don't allow non-mapping context\n\n- Fix tiny documentation issues\n\n- Change the library logo\n\n0.3.0 (2015-03-15)\n==================\n\n- Documentation release\n\n0.2.1 (2015-02-15)\n==================\n\n- Fix `render_template` function\n\n0.2.0 (2015-02-05)\n==================\n\n- Migrate to aiohttp 0.14\n\n- Add `status` parameter to template decorator\n\n- Drop optional `response` parameter\n\n0.1.0 (2015-01-08)\n==================\n\n- Initial release\n",
    "bugtrack_url": null,
    "license": "Apache 2",
    "summary": "jinja2 template renderer for aiohttp.web (http server for asyncio)",
    "version": "1.6",
    "project_urls": {
        "Homepage": "https://github.com/aio-libs/aiohttp_jinja2/"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eb9065238d4246307195411b87a07d03539049819b022c01bcc773826f600138",
                "md5": "f0aca50236af691c0f7e603c64a008e3",
                "sha256": "0df405ee6ad1b58e5a068a105407dc7dcc1704544c559f1938babde954f945c7"
            },
            "downloads": -1,
            "filename": "aiohttp_jinja2-1.6-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f0aca50236af691c0f7e603c64a008e3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 11736,
            "upload_time": "2023-11-18T15:30:50",
            "upload_time_iso_8601": "2023-11-18T15:30:50.743240Z",
            "url": "https://files.pythonhosted.org/packages/eb/90/65238d4246307195411b87a07d03539049819b022c01bcc773826f600138/aiohttp_jinja2-1.6-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e639da5a94dd89b1af7241fb7fc99ae4e73505b5f898b540b6aba6dc7afe600e",
                "md5": "a71dfafdb279d067956f95719b12cb9a",
                "sha256": "a3a7ff5264e5bca52e8ae547bbfd0761b72495230d438d05b6c0915be619b0e2"
            },
            "downloads": -1,
            "filename": "aiohttp-jinja2-1.6.tar.gz",
            "has_sig": false,
            "md5_digest": "a71dfafdb279d067956f95719b12cb9a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 53057,
            "upload_time": "2023-11-18T15:30:52",
            "upload_time_iso_8601": "2023-11-18T15:30:52.559091Z",
            "url": "https://files.pythonhosted.org/packages/e6/39/da5a94dd89b1af7241fb7fc99ae4e73505b5f898b540b6aba6dc7afe600e/aiohttp-jinja2-1.6.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-18 15:30:52",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "aio-libs",
    "github_project": "aiohttp_jinja2",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [],
    "lcname": "aiohttp-jinja2"
}
        
Elapsed time: 0.38284s