[英]Passing Url params from one page to another
因此,我在頁面上有一個顯示分頁結果的過濾器表單。 當前,當您使用get請求應用過濾器設置時,一切正常,但是當您嘗試切換頁面時,它將重置。 我曾想過使用以下腳本將網址從一個頁面傳遞到另一頁面。 這將復制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 »</a>
?page=1&page=2&createdBy=&occursIn=&createdAfter=&createdBefore=&terminal_nodes=&project=1
如果我理解正確,那么您正在添加分頁服務器端?page={{...}}
並且通過js添加了已經存在的url參數。
產生的網址有兩個?
在其中,這可能就是為什么鏈接沒有為您提供正確頁面的原因。
location.search包含?
因此要將其添加到您的?page = x中,您必須替換?
與&
:
document.querySelectorAll('.fqs')
.forEach((el) => el.attributes.href.value += window.location.search.replace("?", "&"));
編輯:如果可行,它可能會停止在下一頁上工作,因為location.search隨后將包含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,
}
在我看來。 它會復制參數,然后刪除參數匹配頁面並在上下文中進行編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.