Django使用后退按钮重定向行为

时间:2012-06-05 23:52:19

标签: django redirect back-button

我现在遇到一个问题,我的网站上有一个“随机”链接,可以看到一个随机用户。我设置它的方法是获取user_id,然后使用重定向来提供正确的页面。我遇到的问题是,如果我多次点击随机按钮,点击后面会在“随机”点击之前将我带回页面。

更具体一点,这就是发生的事情: 首页,单击随机(转到/ user1 /),单击随机(转到/ user4 /),回击(最后在主页上)。在这种情况下,我想结束/ user1 /

这是随机视图方法:

def Random(request):
    user = helpers.GetRandomUser()
    return redirect('user_display', user_slug=user.username)

模板只有一个指向/ random /的链接,它会被路由到上面的视图。

编辑:显然它在Firefox中正常运行,但在Chrome中运行。我希望它到处都有类似Firefox的行为。

3 个答案:

答案 0 :(得分:1)

因此,如果我理解正确,您可以在指向同一网址的链接上点击两次(例如/random_user/),然后使用随机重定向进行回复。这看起来非常传统,并且听起来不错,以至于Chrome可能会将其视为单个历史记录条目。

要在浏览器中实现您想要的行为,只需在呈现随机用户链接之前生成随机网址。

如果您想在多个视图中使用它,write a custom template tag

@register.simple_tag
def random_user_url():
    user_url = # generate your random user url
    return user_url

在你的模板中:

{% load your_tag_lib %}
<a href="{% random_user_url %}">Random user</a>

这样每次点击都会将浏览器引导到另一个网址,并将其记忆为单独的历史记录条目。

答案 1 :(得分:0)

要明确的是,当你说“后退按钮”时,你的意思是:

  1. 浏览器后退按钮
  2. 您自己创建的后退按钮
  3. 如果是2,你是通过客户端这样做的吗?比如通过javascript?

答案 2 :(得分:0)

使用以下代码强制浏览器不缓存页面。因此,单击后退按钮会向服务器发送请求,现在您可以捕获它并将其重定向到所需的页面。

from django.views.decorators.cache import cache_control

@cache_control(no_cache=True, must_revalidate=True)
def func()
  #some code
  return