David542
David542

Reputation: 110073

How to get full url from django request

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'] ?

Upvotes: 51

Views: 67353

Answers (3)

C.K.
C.K.

Reputation: 5498

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()

Upvotes: -2

Yogesh dwivedi Geitpl
Yogesh dwivedi Geitpl

Reputation: 4462

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.

Upvotes: 77

Related Questions