How to use Django to get the name for the host server? How to use Django to get the name for the host server? django django

How to use Django to get the name for the host server?


I generally put something like this in settings.py:

import sockettry:    HOSTNAME = socket.gethostname()except:    HOSTNAME = 'localhost'


If you have a request (e.g., this is inside a view), you can look at request.get_host() which gets you a complete locname (host and port), taking into account reverse proxy headers if any. If you don't have a request, you should configure the hostname somewhere in your settings. Just looking at the system hostname can be ambiguous in a lot of cases, virtual hosts being the most common.


Just add to @Tobu's answer.If you have a request object, and you would like to know the protocol (i.e. http / https), you can use request.scheme (as suggested by @RyneEverett's comment).

Alternatively, you can do (original answer below):

if request.is_secure():    protocol = 'https'else:    protocol = 'http'

Because is_secure() returns True if request was made with HTTPS.