Git Product home page Git Product logo

Comments (6)

frankban avatar frankban commented on July 21, 2024

Hi Bertrand, thanks for reporting.
Could you please be more specific about how to reproduce this bug? Where do you expect to see the querydict? Where is it missing?

from django-endless-pagination.

BertrandBordage avatar BertrandBordage commented on July 21, 2024

Hi Francesco,

What I am trying to do is filtering the objects of an AjaxListView using Haystack.
This is what my view looks like:

class ExampleListView(AjaxListView):
    model = Example

    def get_queryset(self):
        Model = self.model
        qs = Model.objects.all()
        search_query = self.request.GET.get('q')
        if search_query:
            sqs = SearchQuerySet().models(Model)
            sqs = sqs.auto_query(search_query)
            pk_list = sqs.values_list('pk', flat=True)
            qs = qs.filter(pk__in=pk_list)
        return qs

The request therefore looks like /url/?q=molière or /url/?q=molière&page=3.
When I send such requests, the response is correct, except that AjaxListView removes other GET arguments than page in the responsed path.
To resume: /url/?q=molière&page=3 > correct HTML that takes the Haystack search into account but the url becomes /url/?page=3.

I tried to figure out what was going on in endless_pagination, but didn't find. Maybe it has something to do with endless_pagination.utils.get_querystring_for_page but that function looks correct to me.

from django-endless-pagination.

frankban avatar frankban commented on July 21, 2024

Thanks for the quick reply Bertrand.
What version of endless pagination are you using? 1.1 or the current trunk?
Is the 'q=something' removed when you click on another page, or just missing from request.GET?

from django-endless-pagination.

BertrandBordage avatar BertrandBordage commented on July 21, 2024

Oh, forget about it. The problem was not coming from endless-pagination. This was coming from a javascript I use to automatically change the GET request as we go down in the endless page. The page I am talking about is http://alpha.dezede.org/evenements/.

And the (ugly) javascript in cause is window.history.pushState({},"", "{{ request.path }}{% if page_number > 1 %}?page={{ page_number }}{% endif %}");.

So, this issue is invalid but my problem kind of stays the same. The proper solution (I guess) would be to implement these automatic GET changes in endless-pagination, since it is a common feature nowadays.

from django-endless-pagination.

frankban avatar frankban commented on July 21, 2024

Cool Bertrand.
I guess you are suggesting something like #2.
The Javascript refactoring is in progress in trunk, still not documented, but in the near future it will be quite simple to implement Pjax. You might want to take a look at https://github.com/frankban/django-endless-pagination/blob/master/endless_pagination/static/endless_pagination/js/endless-pagination.js

In the meanwhile, if you have any suggestion about how to implement pushState in Endless Pagination, please feel free to add comments in #2. history.js seems very interesting IMHO.

from django-endless-pagination.

BertrandBordage avatar BertrandBordage commented on July 21, 2024

Yes, what I made is something like history.js (except that history.js probably handles more outdated browsers).

But there is still two remaining issues:

  1. How can we properly set GET arguments using jQuery? I just made a try using http://archive.plugins.jquery.com/project/query-object. This works perfectly, even though it wasn't updated for 3 years.
  2. We have the solution to change GET as new pages are loaded via Ajax. But what if one goes down, loads a bunch of pages, then goes up 4 "pages" before? The URL is still the one of the lastly loaded page. Idealy, the behaviour should be like on FAIL Blog.

I have nearly no idea on how to achieve this last issue.

from django-endless-pagination.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.