Skip to main content

An application that allows you to run many different sites on one Django instance

Project description

==============
django-domains
==============


.. image:: https://badge.fury.io/py/django-domains.png
:target: http://badge.fury.io/py/django-domains

.. image:: https://travis-ci.org/marazmiki/django-domains.png?branch=master
:target: https://travis-ci.org/marazmiki/django-domains

.. image:: https://coveralls.io/repos/marazmiki/django-domains/badge.png?branch=master
:target: https://coveralls.io/r/marazmiki/django-domains?branch=master

.. image:: https://pypip.in/d/django-domains/badge.png
:target: https://pypi.python.org/pypi/django-domains


Installation
------------

1. Install the package

.. code:: bash

pip install django-domains

2. Open settings.py and add middlewares into end of MIDDLEWARE_CLASSES tuple:

.. code:: python

MIDDLEWARE_CLASSES += (
'domains.middleware.RequestMiddleware',
'domains.middleware.DynamicSiteMiddleware',
)

First middleware ``domains.middleware.RequestMiddleware`` is required, because
it sets the `request` object into local thread.

Second middleware ``domains.middleware.DynamicSiteMiddleware`` is optional. You
can use it for dynamical changing `SITE_ID` parameter corresponding site's PK
with requested domains (see Django sites framework).

If you also want to use different templates for domains, add template loaders
in begin of TEMPLATE_LOADERS tuple:

.. code:: python

TEMPLATE_LOADERS = (
'domains.loaders.filesystem.Loader',
'domains.loaders.app_directories.Loader',
# another loaders
)

3. Run tests:

.. code:: bash

./manage.py test domains

Usage
-----

If you want to use different template sets for each domains, just create
directories with name `domainname.tld` (don't forget add TEMPLATE_LOADERS
as figured in Installation) and put templates here.

Also you can use custom function that builds domain name. You must add
`DOMAINS_TEMPLATE_NAME_FUNCTION` attribute into your settings.py and
specify path to naming function.

Function must return tuple with path fragments. This fragments will be
joined into full template path with django-domains.

Expect you call this function `my_custom_template_name` and placed it in
`my/project/utils.py`:

Btw, you can access to `request` :)

.. code:: python

def my_custom_template_name(template_dir, template_name):
"""
This function generates template path in format:

{template_dir}/custom/domains/{host}/{template_name}
"""
from domains.utils import get_request

request = get_request()

return (template_dir, 'custom', 'domains', request.get_host,
template_name)


Add into your `settings.py` this line:

.. code:: python

DOMAINS_TEMPLATE_NAME_FUNCTION = 'my.project.utils.my_custom_template_name'



0.6.0
-----

* Drop support of older python versions (2.6, 3.2, 3.3)
* Drop support of older Django versions (1.6 and older)
* Add support for Python 3.5
* Add support for Django 1.9 (thanks to `Jordan Reiter <mailto:jordanreiter@gmail.com>`_
* Migrate to Django Applications API (thanks to `Jordan Reiter <mailto:jordanreiter@gmail.com>`_
* Improve PEP-0008 support and some minor code refactoring

0.5.2
-----

* Update head django versions


0.5.1
-----

* Update head django versions

0.5
---
* Added support Django 1.8
* New hook machinery

0.2
---

* Improves pep8;
+ Support for Django 1.4, Django 1.5, Django 1.6, Django1.7
+ Added Travis CI integration

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

django-domains-0.6.zip (18.1 kB view details)

Uploaded Source

django-domains-0.6.tar.gz (9.8 kB view details)

Uploaded Source

django-domains-0.6.tar.bz2 (8.2 kB view details)

Uploaded Source

Built Distribution

django_domains-0.6-py2.py3-none-any.whl (14.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-domains-0.6.zip.

File metadata

  • Download URL: django-domains-0.6.zip
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for django-domains-0.6.zip
Algorithm Hash digest
SHA256 e6733761f7bbb8ef95419104d54ded74aae182c151c783171413e193e52b0853
MD5 87ac089f6656f7225a7507bc1f4541a8
BLAKE2b-256 be55c9fafb6bd5be6da97a9cffe846141506982436b11559b6cdaef86d0d2012

See more details on using hashes here.

File details

Details for the file django-domains-0.6.tar.gz.

File metadata

File hashes

Hashes for django-domains-0.6.tar.gz
Algorithm Hash digest
SHA256 355abb03ed4bf03f9628a5f8b4cb2359fbe5537f14268453d9ddf09c68eb597d
MD5 f5db5ad775753eb87857b61f18e3a45c
BLAKE2b-256 f4f6716ee90fd242ae349effa7c4969c2fd2c1762d7d3262331fd7bc3a78db51

See more details on using hashes here.

File details

Details for the file django-domains-0.6.tar.bz2.

File metadata

File hashes

Hashes for django-domains-0.6.tar.bz2
Algorithm Hash digest
SHA256 5bf8c9b3bbe354febb48f9317594b398abd6b85066e5030d594c2befcd278e98
MD5 f3bc8f902df151aeeec7cc1edac5ee8e
BLAKE2b-256 f0caf83185e52e2d3aafc89016fa99f5cd37d24d1d8eed000f9f9b3bd2c8793a

See more details on using hashes here.

File details

Details for the file django_domains-0.6-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_domains-0.6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0f9d225225a270a0d8f0768b359ffe8dc959844e49de1b383c3b182b861c473a
MD5 7844d723ea0f56e551cd01b41f1e31a4
BLAKE2b-256 61ed4db228f37d7b12300fe0f0dea947ade5348dfa995fa261fc5a2f99e54870

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page