将Url参数从一个页面传递到另一个页面

2024-09-27 00:20:12 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在页面上有一个过滤表单,显示分页结果。当前,当您使用get请求应用过滤器设置时,一切正常,但当您尝试切换页面时,它会重置。我考虑过使用下面的脚本将url从一个页面传递到另一个页面。这会复制url,但实际上不会更改页面,只会复制字符串。你可以在下面的url中看到,url确实改变了页面,但是不管url是什么,实际的页面都停留在第一页上。我用的是Django和Django过滤器。也许有更好的jQuery解决方案,有什么建议吗?你知道吗

脚本

document.querySelectorAll('.fqs')
    .forEach((el) => el.attributes.href.value += window.location.search);

网址

无脚本:

/relations/?createdBy=&occursIn=&createdAfter=&createdBefore=&terminal_nodes=&project=1

带脚本:

/relations/?page=2?createdBy=&occursIn=&createdAfter=&createdBefore=&terminal_nodes=&project=1

下一页链接

<a class="fqs" href="?page={{ relations.next_page_number }}">Next &raquo;</a>

按“上一步”按钮时的Url

?page=1&page=2&createdBy=&occursIn=&createdAfter=&createdBefore=&terminal_nodes=&project=1

Tags: djangoproject脚本url过滤器page页面terminal
2条回答

如果我理解正确,您将添加分页服务器端?page={{...}},并通过js添加已经存在的url参数。你知道吗

结果url中有两个?,这可能是链接没有提供正确页面的原因。你知道吗

你知道吗位置.搜索包含?所以要将其添加到您的?page=x必须用&替换?

document.querySelectorAll('.fqs')
    .forEach((el) => el.attributes.href.value += window.location.search.replace("?", "&"));

编辑:如果这样做,它可能会停止在下一页的工作位置.搜索然后将包含page=x,给出重复的页面查询参数。你知道吗

要从location.search中筛选出页面参数,可以执行以下操作:

document.querySelectorAll('.fqs')
  .forEach((el) => {
    var params = window.location.search.replace("?", "&").split("&");
    params = params.filter((v) => v.indexOf("page") == -1).join("&");
    el.attributes.href.value += params;
  });

顺便说一句,请注意箭头函数在IE11这样的传统浏览器中不起作用。你知道吗

为了实现这一点,我决定不使用任何javascript,而是使用python。我补充道

gt = request.GET.copy()
if 'page' in gt:
    del gt['page']

    context = {
        'paginator': paginator,
        'relations': relations,
        'params': urlencode(gt),
        'filter': filtered,
        }

在我看来。它复制参数,然后删除参数匹配页并在上下文中编码。你知道吗

相关问题 更多 >

    热门问题