david
david

Reputation: 299

Get the original path in django

I have a question: how to get the current path of the url. Let's say, I have 3 navigation bars, about , blog and contact page. In each page, I have facebook, twitter and a manual email a friend button. When I clicked the email a friend button, and the current URL is www.example.com/about, the current URL is now already www.example.com/emailafriend. How can I get the www.example/about? Also in blog and contact. Please help me. Thanks.

Upvotes: 0

Views: 437

Answers (3)

Jason McClellan
Jason McClellan

Reputation: 3021

How does your email a friend button work? Is it a django view that takes the current URL and emails it? If so, you don't want the "current" URL, which, as you note, is actually the email a friend URL. What you want to do is pass the URL you want to share as a URL parameter, ie:

/share?url=http://www.example.com/blog

Adding more info based on comments:

When I was referencing URL above, I was not referring to your django URL configuration. Let's take a step back.

On your About page you have a link to email a friend, right? That link is probably generated in your template, but it's the same on every page. Something like:

<a href="/emailafriend">Email a friend</a>

Instead of this, try this:

<a href="/emailafriend?url={{ request.get_full_path }}">Email a friend</a>

Now you need to make your email_a_friend view handle this. It can get the url via

request.get('url', '').

Some additional information:

You might want to escape the {{ request.get_full_path }} function so that it's escaped and URL safe, then you'll have to unescape it in your view. Once you get the URL back to your view, you can do as you please with it.

{{ request.get_full_path|urlencode }}

Upvotes: 2

Brian Neal
Brian Neal

Reputation: 32389

It sounds like your want to get the referring URL (the URL that sent you to the current page). That is available to you in the request object, although it is not 100% reliable:

request.META['HTTP_REFERER']

See the documentation on HttpRequest objects for more information.

Upvotes: 0

Gautam
Gautam

Reputation: 7958

Try using Relative URLs like for example From www.example.com/about to get to www.example.com/email use /email. Using relative urls is the simplest solution .

Take a look at this.

Absolute vs relative URLs

Upvotes: 0

Related Questions