How can I get the full/absolute URL (with domain) in Django?

How can I get the full/absolute URL (e.g. https://example.com/some/path) in Django without the Sites module? That’s just silly… I shouldn’t need to query my DB to snag the URL!

I want to use it with reverse().

29 Answers
29

Use handy request.build_absolute_uri() method on request, pass it the relative url and it’ll give you full one.

By default, the absolute URL for request.get_full_path() is returned, but you can pass it a relative URL as the first argument to convert it to an absolute URL.

>>> request.build_absolute_uri()
'https://example.com/music/bands/the_beatles/?print=true'
>>> request.build_absolute_uri('/bands/?print=true')
'https://example.com/bands/?print=true'

Leave a Comment