Lander, Стефан, нужно чтобы при обновлении страницы в браузере, отправлялся ajax запрос в django-вьюху с параметром "unhide_on_refresh": true, который django-вьюха видит и обрабатывет (показывает скрытые ранее пользователем результаты поиска).
В данный момент реализовано следующим образом:
if (window.performance) {
console.info("window.performance work's fine on this browser");
}
if (performance.navigation.type == 1) {
$.ajax({
type: "GET",
url: "{% url 'po_gen' %}",
data: {
"page": "{{ orders.page }}",
"sort": "{{ sort }}",
"entries": "{{ entries }}",
"unhide_on_refresh": true
}
})
} else {
console.log( "This page is not reloaded");
}
Но в результате - нужно сделать два обновления страницы, чтобы результаты поиска перестали быть скрытыми.
if request.GET.get('hide'):
hide_list = request.GET.getlist('hide')
for hide_item in hide_list:
hide, create = POHiddenParts.objects.get_or_create(username=request.user.username,
hidden_part_id=hide_item)
@MEDIOFF, храню в бд список скрытых товаров.
hidden_part_id - айди скрытого товара
username - пользователь, для которого этот товар скрытый.
akrvch, Интересно, во-первых, почему вы по GET запросу создаете записи в бд, это немного противоречит REST, во-вторых надо понять для чего вы вообще скрываете эти записи, типо что бы пользователь их никогда не видел?
Я просто никак не въеду, вы сначала их скрываете, а потом снова хотите показывать, зачем?
Стефан, на странице с поиском должна быть возможность скрыть результаты поиска. Они должны оставаться скрытыми при переходе на следующую страницу (реализована пагинация), при изменении параметров сортировки либо поискового запроса. Но если юзер обновит страницу, то результаты, которые он ранее скрыл, должны снова появится, т.е перестать быть скрытыми.
Стефан, потому что пагинация на сайте реализована на беке, а не на фронте. При переходе на следующую/предыдущую страницу мне надо где-то хранить эти скрытые результаты. Можно и в сессиях хранить список айдишников скрытых товаров, но от этого изначальный вопрос не перестает быть актуальным.
akrvch, К пагинации вопросов нет, вы поймите что решение это делать на бэке, это дудос вашей базы, так как вы еще создание объектов в транзакцию не оборачиваете, это смешивание логики представления и бизнесовой, не должен бэк думать о том как скрывать товары до перезагрузки страницы, а если у юзера свет вырубило? теперь он эти товары вообще не увидит? это делается на фронте, нет разных событий для перезагрузки страницы и перехода на другую, она перезагружается в любом случае, либо делайте без перезагрузки страницы, либо пишите в localStorage и на клиенте прорабатывайте логику
Стефан, ну касательно того, что юзера свет вырубит - у юзера есть отдельный блок, где он может посмотреть скрытые товары и сделать их «не скрытыми» снова вручную.