Django:重定向到上一页并保持滚动位置

时间:2018-03-30 07:01:40

标签: django django-views

我看到this问题,你可以使用以下方法重定向到上一页:

return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

但有没有办法保持它所处的滚动位置?以上重新加载页面。

1 个答案:

答案 0 :(得分:2)

经过一番来回,这就是我想出来的(在this回答的帮助下):

from django.http import HttpResponse

def myview (request):
  ..
  ..
  return HttpResponse('<script>history.back();</script>')

此外,请注意history.back() 重新加载&#39;这页纸。要重新加载页面,我们必须使用location.reload()来保持滚动位置,但我们必须以巧妙的方式使用它,以免让它进入无限循环。所以这就是我做的事情(如this聪明的答案中提到的那样)

<input type="hidden" id="refreshed" value="false">
<script type="text/javascript">
    $(window).load(function(){
        if ($('#refreshed').val() == "false") {
          $('#refreshed').val("true"); 
        }
        else {
          $('#refreshed').val("false");
          location.reload();
        }
      });
</script>

注意:以上是使用隐藏的输入字段,因为输入字段的状态将保留在&#39; back&#39;被调用。

所有这些,如果在您的用例中更好地运行而不是执行上述操作,您可能需要考虑进行Ajax调用。