With django-sitesutils
you're able to access current site, using
request.site
everywhere you can access request
object.
Current site is detected using host domain from request
object and
SITE_ID
project setting as a fallback. If site is found, then
request.site
is set to the respective Site
model object from
django.contrib.site
app, otherwise request.site
is a
django.contrib.sites.models.RequestSite
instance.
Install
django-sitesutils
using pip:$ pip install django-sitesutils
Add
RequestSiteMiddleware
to yourMIDDLEWARE_CLASSES
setting:MIDDLEWARE_CLASSES = ( # ... 'sitesutils.middleware.RequestSiteMiddleware', )
This middleware will set
site
attribute for therequest
object. This attribute is evaluated lazily, only when you access it.If you want to access current site in templates, add
site
context processor to yourTEMPLATE_CONTEXT_PROCESSORS
settings:TEMPLATE_CONTEXT_PROCESSORS = ( # ... 'sitesutils.context_processors.site', )
Feel free to fork, send pull requests or report bugs and issues on github.