Skip to content

This middleware enables Django projects to route requests to different URL configurations based on the domain of the incoming request.

License

Notifications You must be signed in to change notification settings

ferhat-mousavi/dj-multidomain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dj-multidomain

Multiple Domain Middleware for Django

This middleware enables Django projects to route requests to different URL configurations based on the domain of the incoming request. It offers both domain-based URL routing and automatic redirection to another domain for specific domains. It's particularly useful for projects hosted across multiple domains. Developed by Ferhat Mousavi.

Supported (tested) Versions

  • Python: 3.10 and above
  • Django: 4 and above

Sample Project

dj-multidomain example

Installation

  1. Install the package using pip:
   pip install dj-multidomain
  1. Add the Middleware to your Django settings:
MIDDLEWARE = [
    ...
    'dj-multidomain.middleware.MultipleDomainMiddleware',
    ...
]
  1. Configure the domains and their associated URL configurations in settings.py using the MULTI_DOMAIN_CONFIG setting:
MULTI_DOMAIN_CONFIG = {
    'domain1.com': 'path.to.urls_for_domain1',
    'domain2.com': 'path.to.urls_for_domain2',
    ...
}

sample path.to.urls_for_domain1 file

from django.urls import path, include

urlpatterns = [
    path('', include('domain1_app.urls')),
]
  1. (Optional for redirect domains)Configure the domains and their associated domain configurations in settings.py using the MULTI_REDIRECT_CONFIG setting:
MULTI_REDIRECT_CONFIG = {
    "not_my_desire_domain1.com": "my_desire_domain1.com",
    "not_my_desire_domain2.com": "my_desire_domain2.com",
    ...
}
  1. (Optional) For common URLs accessible from any domain, specify the COMMON_URLS setting:
COMMON_URLS = 'path.to.common_urls'

sample path.to.common_urls file

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]
  1. (Optional) If you are in DEBUG mode and want a fallback for unrecognized domains, specify the DEFAULT_DOMAIN setting:
DEFAULT_DOMAIN = 'path.to.default_urls'

Usage

With the middleware set up, incoming requests will be routed based on their domain to the specified URL configurations. URLs defined in COMMON_URLS will be accessible from any domain.

Support & Contribution

For issues, feedback, or feature requests, please open an issue on the GitHub repository. Contributions are welcome; feel free to submit a pull request.

About

This middleware enables Django projects to route requests to different URL configurations based on the domain of the incoming request.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages