Skip to main content

Django multi-tenant app where each subdomain is a tenant

Project description

django_subdomain_tenancy

django-subdomain-tenancy is a Django multi-tenant app where each subdomain is a tenant, simplifying deployment, scalability, and per-client management.

Detailed documentation is in the "docs" directory.

Quick start

1. Add django_subdomain_tenancy.apps.SubdomainConfig to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = [
        ...,
        "django_subdomain_tenancy.apps.SubdomainConfig",
    ]

2. Add this configs in settings.py:

    AUTH_USER_MODEL = 'subdomain.CustomUser'
    LOGIN_URL = '/accounts/login/' 
    LOGIN_REDIRECT_URL = "/"
    LOGOUT_REDIRECT_URL = "/"

    LANGUAGE_CODE = "pt-BR" OR "en"

    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    
    EMAIL_HOST = XXXXXXXXX
    EMAIL_PORT = XXXXXXXXX
    EMAIL_USE_TLS = XXXXXXXXX
    EMAIL_HOST_USER = XXXXXXXXX
    EMAIL_HOST_PASSWORD = XXXXXXXXX
    DEFAULT_FROM_EMAIL = XXXXXXXXX

3. Include the polls URLconf in your project urls.py like this::

    path("", include("django_subdomain_tenancy.urls")),

4. Run python3 manage.py migrate to create the models.

5. Create a record in instance table for master dubdomain:

    insert into django_subdomain_tenancy_intance 
    values(1, "Master Tenant", "master", 1);

6. Create SuperUser administrator

(It needs to be this way, because they're the only user who can log in to all the subdomains.), 
and set id instance `1`:

``python3 manage.py createsuperuser``

7. Visit the / For Login in the system fronend,

`/admin/` Logging is only allowed using the master subdomain.

8. For the development environment, add one more instance; I'll use the test subdomain cobaia:

    insert into django_subdomain_tenancy_intance 
    values(2, "Cobaia Tenant", "cobaia", 1);

If use Linux or Mac add the following lines to the /etc/hosts file:

    127.0.0.1 master.localhost
    127.0.0.1 cobaia.localhost

If you're using Windows, you're starting the project the wrong way.

9. Access tenant urls:

    master.localhost:8000
    cobaia.localhost:8000

Simple Login Frontend: /accounts/login/

Project details


Download files

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

Source Distribution

django_subdomain_tenancy-0.1.0.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_subdomain_tenancy-0.1.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file django_subdomain_tenancy-0.1.0.tar.gz.

File metadata

File hashes

Hashes for django_subdomain_tenancy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1fd6cc1332634b0357536bc1eb12b4dd88133eed192f5089b0802157e416b168
MD5 2f3c88374a69565917800ff56f271d13
BLAKE2b-256 bdf431ff9f96eb636becc977ec3330a84ac3dcfd92366fe6a15159857acbeac3

See more details on using hashes here.

File details

Details for the file django_subdomain_tenancy-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_subdomain_tenancy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b679138804e16f4d2eb3576a643d9a01dd2a1c073b17951b9a86a5ff42edaab0
MD5 57db21c6c38aaed686c70cb045ddb27f
BLAKE2b-256 dacc0bf2657074620d6d501c1500e8abb1832f21ed8cc45d27faf9a9426336ad

See more details on using hashes here.

Supported by

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