Исправление предыдущей/следующей ссылки на страницы для запрошенной AJAX таблицы django-tables2

Я использую django-tables2 для создания своих таблиц. Для обычных GET-запросов я возвращаю таблицу в контексте и {% render_table mytable %} в шаблоне, все работает хорошо. Однако иногда я делаю запрос через AJAX, а в представлении просто возвращаю mytable.as_html() в контексте. Это также работает в основном нормально, но ссылки на страницы («Предыдущий/Следующий») не указывают на правильные URL-адреса (например, они могут просто указывать на ?page=2, а не на page=?&myvariable1=blue&myvariable2=red, например).

Похоже, что именно тег шаблона render_table отвечает за то, чтобы эти previous/next ссылки указывали на нужные места на основе тега request.GET. Можно ли просто from django_tables2.templatetags.django_tables2 import render_table и каким-то образом передать функцию render_table mytable и данные запроса для создания таблицы с правильными ссылками на страницы?

Я знаю, что, вероятно, мог бы сделать это с помощью jQuery, но я хотел сначала посмотреть, есть ли решение Django.


person fpghost    schedule 16.08.2014    source источник


Ответы (1)


На всякий случай, это поможет кому-то еще:

Вместо того, чтобы передавать таблицу обратно вызову AJAX с помощью table.as_html(), я закончил тем, что сделал

table_str = render_to_string('django_tables2/table.html',
                             RequestContext(request,
                                            {'table': tableContext['table']}) )

Это дает мне таблицу html в виде строки, но разница теперь в том, что Previous/Next и ссылки сортировки имеют правильные ссылки из добавленной строки запроса. Когда таблица django-tables2 покидает представление, у нее нет правильных ссылок, они добавляются в шаблон при вызове тега {% render_table mytable %}, который, в свою очередь, по умолчанию использует django_tables2/table.html, в котором тег querystring выполняет фактическую работу по рендерингу URL-адреса для Previous/Next из запроса и т. д..

person fpghost    schedule 17.08.2014