Travis
django-layers makes it possible to serve a set of templates and static resources as defined in settings.py. This means you can serve different HTML, Javascript and CSS to eg. basic mobile devices, smart phones and desktop browsers. These template sets (aka layers) also stack, so if you create foo.html for basic devices it is automatically available for desktop browsers as well. You can override foo.html for desktop browsers.
Installation
Install or add django-layers to your Python path.
Add layers after django.contrib.static to your INSTALLED_APPS setting.
Ensure the app that you will be creating layers for appears first in INSTALLED_APPS else template override won’t work.
Example
Note: there is a working example in the example subdirectory.
We have sites example.com, basic.example.com and smart.example.com. Each of the sites have their own settings.py, thus different Django processes.
Directory structure
templates
- basic
- foo.html (1)
- bar.html (2)
- smart
- bar.html (3)
- web
- bar.html (4)
static
- basic
- foo.css (5)
- bar.css (6)
- smart
- bar.css (7)
- web
- bar.css (8)
Settings
We define an “inheritance” hierarchy.
Desktop settings has LAYERS = {'layers': ['basic', 'web']}.
Basic settings has LAYERS = {'layers': ['basic']}.
Smart settings has LAYERS = {'layers': ['basic', 'smart']}.
All settings require loaders and finders to be set. The order is important.
INSTALLED_APPS = (
'myapp',
'layers',
...
)
TEMPLATE_LOADERS = (
'layers.loaders.filesystem.Loader',
'django.template.loaders.filesystem.Loader',
'layers.loaders.app_directories.Loader',
'django.template.loaders.app_directories.Loader',
)
STATICFILES_FINDERS = (
'layers.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.FileSystemFinder',
'layers.finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
Template results
http://example.com/foo yields (1).
http://example.com/bar yields (4).
http://basic.example.com/foo yields (1).
http://basic.example.com/bar yields (2).
http://smart.example.com/foo yields (1).
http://smart.example.com/foo yields (3).
Static results
http://example.com/static/foo.css yields (5).
http://example.com/static/bar.css yields (8).
http://basic.example.com/static/foo.css yields (5).
http://basic.example.com/static/bar.css yields (6).
http://smart.example.com/static/foo.css yields (5).
http://smart.example.com/static/foo.css yields (7).
Overriding templates from other apps
The normal template resolution rules apply. Creating eg. templates/web/registration/login.html will override the login page for web only.
Collectstatic
Collectstatic remains unaffected. The collector delegates to finders, so all layer aware resources end up with partial paths under the STATIC_ROOT directory.
Changelog
0.2
Inevitable package rename.
0.1
Initial release.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django-layers-hr-0.3.tar.gz.
File metadata
- Download URL: django-layers-hr-0.3.tar.gz
- Upload date:
- Size: 8.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ae99886bba7f5fb440948a258fd171f87545e6e95cd877e94f3980aaef6eaf0
|
|
| MD5 |
6ce9a15a14f7f0e6be6ff90aec809e9c
|
|
| BLAKE2b-256 |
336eaa9ba326cddf25de108fcb6aca4679dd9e3b1908f0e5e069242457e19bdd
|
File details
Details for the file django_layers_hr-0.3-py2.7.egg.
File metadata
- Download URL: django_layers_hr-0.3-py2.7.egg
- Upload date:
- Size: 17.1 kB
- Tags: Egg
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
862b29872cf20ac0edda1b5e50df9f6ccf412826c6bb9797fddbb24224f6505a
|
|
| MD5 |
acd25d04e46722290adcc1057954fc00
|
|
| BLAKE2b-256 |
33774ac1c506579e8e06bab7a254864bd39cd7c4f6e407fe96ed7a6d291c5879
|