Once you have the TLS certificates and routing working, can't you make a
tiny piece of middleware which takes the hostname (provided via
nginx/apache in a request header) and add an attribute on the request which
corresponds to your virtual site?
e.g. (dodgy untested code follows):
def multisite_middleware(get_response): def middleware(request):
domain_name = request.META.get('HTTP_HOST', DEFAULT_DOMAIN)
request.my_site = Site.objects.get(id=domain_name) response =
get_response(request) return response return middleware
Then anywhere in your code you can access request.my_site for the
site-specific data you need.
In addition, if you haven't already, take a look
at https://docs.djangoproject.com/en/4.0/ref/contrib/sites/
On Friday, 31 December 2021 at 07:03:44 UTC+11 [email protected] wrote:
> Thank you for your detailed response. Following your response point by
> point with few additional googling, it works as expected.
>
> On cpanel:
> I created a subdomain called *
> Then I chose document root as the main Django root. (This is needed so
> that letsencrypt can automatically create a certificate.)
>
> Then the routing works seemlessly
>
> Thank you
>
> On Thu, Dec 30, 2021, 7:06 PM Sherif Adigun <[email protected]> wrote:
>
>> Thank you very much for you guidance. I have been able to make it work
>> using Django-hosts on my local. Still trying to fix it out to work on my
>> shared hosting if possible
>>
>> On Thu, Dec 30, 2021, 10:29 AM Sherif Adigun <[email protected]> wrote:
>>
>>> Thank you @Tim. Django subdomains looks promising but it's outdated. It
>>> uses codes and imports of django< v2 I have checked django-hosts but it
>>> looks as if it can be used for only predefined list of subdomains. Please
>>> help clarify this doubt.
>>>
>>> Thank you for your time
>>>
>>> On Thursday, December 30, 2021 at 1:10:17 AM UTC+1 Tim Chase wrote:
>>>
>>>> On 2021-12-29 15:02, Sherif Adigun wrote:
>>>> > I am faced with a requirement where each user is required to use
>>>> > the application under his own subdomain. Whenever a user registers,
>>>> > he gets username.domain.com and he can add staff, manage reports,
>>>> > etc under his subdomain.
>>>> >
>>>> > What is the best approach to you can suggest please?
>>>>
>>>> Generally this requires
>>>>
>>>> 1) configuring your DNS to allow for wildcard domains so that
>>>> *.domain.com points at your web server, usually looking something like
>>>>
>>>> *.example.com. 3600 IN A 198.51.100.17
>>>>
>>>> 2) setting up your HTTPS certificates. This could be
>>>>
>>>> - involve an ACME-aware Django route (I'm not sure if such a beast
>>>> exists)
>>>>
>>>> - configuring an ACME client like certbot to update your
>>>> DNS records so that Let's Encrypt can verify that you own the
>>>> domain and then grant your a wildcard cert
>>>>
>>>> - use a different CA to obtain a wildcard cert
>>>>
>>>> 2b) if you used a more manual method, put the certs in the
>>>> appropriate place for your web-server to pick them up
>>>>
>>>> 3) configure your web-server front-end/proxy (usually nginx or
>>>> Apache, but there are others) to handle the wildcard domains and pass
>>>> them through to your Django app or WSGI server or what have you. Make
>>>> sure the domain information is passed through in the HTTP_HOST header
>>>>
>>>> 4) use django-subdomains[1] (or maybe django-hosts[2]) middleware to
>>>> extract the intended host-name from the HTTP_HOST header and possibly
>>>> make the route reversable so that .reverse() works
>>>>
>>>> 5) check your views so that they make use of the HTTP_HOST
>>>> information to filter for user-specific information
>>>>
>>>> -tkc
>>>>
>>>>
>>>> [1] https://django-subdomains.readthedocs.io/en/latest/
>>>>
>>>>
>>>> [2] https://github.com/jazzband/django-hosts
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "Django users" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/django-users/CTynQlthabY/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/django-users/6057efaf-5e10-498a-ad2a-40132425412dn%40googlegroups.com
>>>
>>> <https://groups.google.com/d/msgid/django-users/6057efaf-5e10-498a-ad2a-40132425412dn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/7cef164d-0f9c-4ad9-9d2d-18bfcb2d404bn%40googlegroups.com.