How can I get the domain name of my site within a Django template?

mog picture mog · Sep 20, 2009 · Viewed 147.1k times · Source

How do I get the domain name of my current site from within a Django template? I've tried looking in the tag and filters but nothing there.

Answer

Carl Meyer picture Carl Meyer · Sep 21, 2009

If you want the actual HTTP Host header, see Daniel Roseman's comment on @Phsiao's answer. The other alternative is if you're using the contrib.sites framework, you can set a canonical domain name for a Site in the database (mapping the request domain to a settings file with the proper SITE_ID is something you have to do yourself via your webserver setup). In that case you're looking for:

from django.contrib.sites.models import Site

current_site = Site.objects.get_current()
current_site.domain

you'd have to put the current_site object into a template context yourself if you want to use it. If you're using it all over the place, you could package that up in a template context processor.