Dynamic switching of the settings.SIDE_ID for a Django Project
Project description
Django Agile Sites (django_agilesites)
This provides django the ability of dynamic switching of the settings.SIDE_ID. This allows you to then alter the template paths based on the SITE_ID by referencing settings.SITE_FOLDERS.
The way this works is first by dynamically setting (thread-safe) the settings.SITE_ID based on the request.get_host() (which is based in part on request.META['HTTP_HOST']). Once the SITE_ID is established, then it uses that to dynamically look up any template path folder structure you define.
Example / Setup
Lets assume we want to have all traffic going to //beta.foo.com to use our new templates tree
called 'beta' for a new template app_detail.html
. This app will allows you to place the
following templates folder structure in your app to achieve this:
app/
templates/
app/
app_detail.html
app_list.html
beta/
app_detail.html
We need to reference the two sites in question - so in the sites app assume the following. SITE_ID: 1 domain: foo.com SITE_ID: 2 domain: beta.foo.com
Now to enable this to work you need to do the following:
-
Add the
django_agilesites
to the settings.INSTALLED_APPS -
Add the
django_agilesites.loaders.AgileSiteAppDirectoriesFinder
to the settings.TEMPLATE_LOADERS. I put it first. -
Add the
django_agilesites.middleware.AgileSitesMiddleware'
to the settings.MIDDLEWARE_CLASSES -
Add the following settings to reference the folder beta.
SITE_FOLDERS = { 2: 'beta', }
That's it.
Now when you go to //beta.foo.com/app/detail you will use the template in the beta tree and when you go to the list view on beta it will refer to the parent app_list.html.
Notes:
-
You do NOT need to reference the SITE_ID 1 as there isn't a path change for that.
-
You don't have to put every url. We also support the notion of aliases through the use of settings.SITE_ALIASES dictionary. This will force //beta.bar.com to also use the beta templates.
SITE_ALIASES = { 'beta.bar.com': 2, }
Versions
- 1.0.x Django 1.8
- 1.1.x Django 1.9 < 2
Build Process:
- Update the
__version_info__
inside of the application. Commit and push. - Tag the release with the version.
git tag <version> -m "Release"; git push --tags
- Build the release
rm -rf dist build *egg-info; python setup.py sdist bdist_wheel
- Upload the data
twine upload dist/*
Have fun!
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_agilesites-1.1.0.tar.gz
.
File metadata
- Download URL: django_agilesites-1.1.0.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ea5c3cc0a5263ad29d0eab2f0c30f7a01bb72bd359831781cb6db20b8f3f2cf |
|
MD5 | a171b715821167932e19a2210be92e90 |
|
BLAKE2b-256 | 156528b59f1796b94543a88dcf7b7cc3bb94c0234bdc873267932f85a007d259 |
File details
Details for the file django_agilesites-1.1.0-py2.py3-none-any.whl
.
File metadata
- Download URL: django_agilesites-1.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 10.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b51fc4d6f9b1db4b077f8a4dee4ea0c7c6c24c82c259fa619edabdb4ff003c2 |
|
MD5 | b975f4eefb2f487c92434e0f60ebfb43 |
|
BLAKE2b-256 | f7e17a1326e15fd62bcdceff0ba8cfff1736440723b5ca77cc00d6acc1313633 |