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

Anu*_*pam 3 django django-views

我已经看到这个问题,您可以使用以下命令重定向到上一页:

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

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

Anu*_*pam 7

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

from django.http import HttpResponse

def myview (request):
  ..
  ..
  return HttpResponse('<script>history.back();</script>')
Run Code Online (Sandbox Code Playgroud)

另外,请记住,history.back()“刷新”的页面。为了重新加载页面,我们必须使用location.reload()which 也保持滚动位置,但我们必须以巧妙的方式使用它,以免让它进入无限循环。所以这就是我为解决它所做的(如这个聪明的答案中所述)

<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>
Run Code Online (Sandbox Code Playgroud)

注意:上面使用了一个隐藏的输入字段,因为在调用 'back' 时输入字段的状态会保留。

综上所述,如果 Ajax 调用在您的用例中效果更好,那么您可能需要考虑进行 Ajax 调用,而不是执行上述操作。