1

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

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

这是随机视图方法:

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

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

编辑:显然它在 Firefox 中按预期工作,但在 Chrome 中。我希望它到处都有类似 Firefox 的行为。

4

3 回答 3

1

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

from django.views.decorators.cache import cache_control

@cache_control(no_cache=True, must_revalidate=True)
def func()
  #some code
  return
于 2012-06-06T03:01:56.900 回答
1

因此,如果我对您的理解正确,您可以在指向同一网址的链接上单击两次(如/random_user/),然后您会以随机重定向进行响应。这似乎很不合常规,而且 Chrome 可能会将其视为单个历史条目,这听起来并没有那么错误。

要跨浏览器归档您想要的行为,只需在呈现随机用户链接之前生成随机 url。

当您想在多个视图中使用它时,请编写一个自定义模板标签

@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>

这样,每次点击都会将浏览器引导至不同的 url,并将被存储为单独的历史条目。

于 2012-06-06T02:01:34.827 回答
0

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

  1. 浏览器返回按钮
  2. 您自己创建的后退按钮

如果 2,您是通过客户端执行此操作吗?比如通过javascript?

于 2012-06-05T23:59:18.733 回答