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"
}