Skip to main content

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:

  1. Add the django_agilesites to the settings.INSTALLED_APPS

  2. Add the django_agilesites.loaders.AgileSiteAppDirectoriesFinder to the settings.TEMPLATE_LOADERS. I put it first.

  3. Add the django_agilesites.middleware.AgileSitesMiddleware' to the settings.MIDDLEWARE_CLASSES

  4. 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:

  1. You do NOT need to reference the SITE_ID 1 as there isn't a path change for that.

  2. 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:

  1. Update the __version_info__ inside of the application. Commit and push.
  2. Tag the release with the version. git tag <version> -m "Release"; git push --tags
  3. Build the release rm -rf dist build *egg-info; python setup.py sdist bdist_wheel
  4. Upload the data twine upload dist/*

Have fun!

Metadata

Release files for django-agilesites 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-agilesites 1.1.0
File Size Uploaded
django_agilesites-1.1.0.tar.gz 11.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-agilesites 1.1.0
File Interpreter ABI Platform
django_agilesites-1.1.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 21.1 kB

Release files / django_agilesites-1.1.0.tar.gz

Download URL django_agilesites-1.1.0.tar.gz
Size 11.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1ea5c3cc0a5263ad29d0eab2f0c30f7a01bb72bd359831781cb6db20b8f3f2cf
BLAKE2b-256 checksum
How to use checksums
156528b59f1796b94543a88dcf7b7cc3bb94c0234bdc873267932f85a007d259
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / django_agilesites-1.1.0-py2.py3-none-any.whl

Download URL django_agilesites-1.1.0-py2.py3-none-any.whl
Size 10.0 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
9b51fc4d6f9b1db4b077f8a4dee4ea0c7c6c24c82c259fa619edabdb4ff003c2
BLAKE2b-256 checksum
How to use checksums
f7e17a1326e15fd62bcdceff0ba8cfff1736440723b5ca77cc00d6acc1313633
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.2

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page