Reputation: 110073
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
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
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