在django中获取原始路径

时间:2011-11-29 14:00:35

标签: django

我有一个问题:如何获取网址的当前路径。比方说,我有3个导航栏,关于,博客和联系页面。在每个页面中,我有facebook,twitter和手动电子邮件朋友按钮。当我点击电子邮件朋友按钮,当前网址为www.example.com/about时,当前网址现在已经是www.example.com/emailafriend。我如何获得www.example / about?还有博客和联系方式。请帮我。感谢。

3 个答案:

答案 0 :(得分:2)

您的电子邮件如何与朋友按钮配合使用?它是一个django视图,它采用当前的URL和电子邮件吗?如果是这样,您不需要“当前”URL,正如您所注意到的那样,实际上是电子邮件的朋友URL。您要做的是将要共享的URL作为URL参数传递,即:

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

根据评论添加更多信息:

当我引用上面的URL时,我没有提到您的django URL配置。我们退一步吧。

在“关于”页面上,您有一个向朋友发送电子邮件的链接,对吧?该链接可能在您的模板中生成,但在每个页面上都是相同的。类似的东西:

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

而不是这样,试试这个:

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

现在您需要让您的email_a_friend视图处理此问题。它可以通过

获取网址
request.get('url', '').

其他一些信息:

您可能想要转义{{request.get_full_path}}函数以使其转义并保证网址安全,然后您必须在视图中取消它。一旦您将URL返回到您的视图,您就可以随意使用它。

{{ request.get_full_path|urlencode }}

答案 1 :(得分:0)

尝试使用相对网址,例如从www.example.com/aboutwww.example.com/email使用/email。使用相对URL是最简单的解决方案。

看看this

Absolute vs relative URLs

答案 2 :(得分:0)

听起来您想要获取引荐网址(将您发送到当前网页的网址)。您可以在请求对象中使用它,尽管它不是100%可靠:

request.META['HTTP_REFERER']

有关详细信息,请参阅documentation on HttpRequest objects