A bytecode compiling template loader for Django
Project description
A template loader that compiles Django templates into Python bytecode for improved performance.
This package exposes the compiling_loader.Loader template loader. This loader will compile the template syntax tree generated by Django into Python bytecode. If a tag can’t be generated, a fallback will be compiled, which just evaluates the template nodes. The fallback method means that this loader is compatible with the existing loaders, even if you have a lot of custom tags.
The compiler is modular and built around Python 3.4’s singledispatch function, meaning that it can easily be extended to support your own tags if you have expensive custom tags that would benefit from compilation.
The loader itself does not do any caching; it works together with Django’s built-in cached loader to avoid recompilation.
Usage
Install the django-compiling-loader Python package and set the TEMPLATE_LOADERS settings to the following value:
TEMPLATE_LOADERS = (
('django.template.loaders.cached.Loader', [
('compiling_loader.Loader', [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]),
]),
)
If you have other loaders, put them inside the compiling_loader.Loader list to ensure that the generated templates get compiled.
Compatibility
The loader has been tested with Django 1.7, and requires Python 3.4. When it comes to rendering compatibility, this project contains a fair number of test cases that compare the render output from the standard Django template evaluation and this compiler. So far, no incompatibilities have been found.
Performace
The test_proj/run_benchmarks.py script renders a small inheritance based template a large number of times, as well as a large both inheritance and include based template a few times. Below are some comparisons:
Template |
Default |
Compiled |
Speedup |
---|---|---|---|
Small |
0.21 ms |
0.10 ms |
2,1x |
Large |
125 ms |
42 ms |
3,0x |
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 django-compiling-loader-0.0.1.tar.gz
.
File metadata
- Download URL: django-compiling-loader-0.0.1.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 141fac2ff24e0139876ccd5db918ceee9228632e96dbefed49c131081392abef |
|
MD5 | f7ae922930ac4d751f2961ff20cdba0c |
|
BLAKE2b-256 | ccebf10e26543caf2fbd571eec07a5aa6a78aa85f182a0687a4ad5ebce7ab1b7 |
File details
Details for the file django_compiling_loader-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: django_compiling_loader-0.0.1-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f55f5a47544edbe39b97e6a1d2681846abdbdb50d60531f2310935e20df948b5 |
|
MD5 | dc894596cabf7b9259a0f9a776a7eea7 |
|
BLAKE2b-256 | 3cbab741f62817af66eca3ca14f01c3a267ec972470e12108507ae54f3c06528 |