How to get full url from django request

Question:

Is there a better way to get the full url in django than doing the following:

url = request.META['HTTP_HOST']
    + request.META['PATH_INFO']
    + request.META['QUERY_STRING']

Is there something like request.META['URL'] ?

Asked By: David542

||

Answers:

You can get full URL using request.build_absolute_uri method:

FULL_URL_WITH_QUERY_STRING: request.build_absolute_uri()
FULL_URL: request.build_absolute_uri('?')
ABSOLUTE_ROOT: request.build_absolute_uri('/')[:-1].strip("/")
ABSOLUTE_ROOT_URL: request.build_absolute_uri('/').strip("/")

Should this will help full to you.

The best way to use ABSOLUTE URLS in Django, you can create a context_processors or middleware and find your ABSOLUTE_URL and return that so that you can use any where in Django.

Like this example:

def absolute(request):
    urls = {
        'ABSOLUTE_ROOT': request.build_absolute_uri('/')[:-1].strip("/"),
        'ABSOLUTE_ROOT_URL': request.build_absolute_uri('/').strip("/"),
    }

    return urls

And Then you should use {{ABSOLUTE_ROOT}} in any where into you django template.

you can use

in template

{{ request.META.PATH_INFO }}

in views

end_point = request.META.get('PATH_INFO', None)    # not recommend

please use David542‘s answer

request.build_absolute_uri()
Answered By: C.K.
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.