Djangoでは、クエリアイテムを複数のページに表示するためのページ付けを実装するのは非常に簡単です。また、ページ全体を毎回ロードするのではなく、Ajaxを使用して実際に変更されたページのビットのみを更新することも非常に簡単です。ただし、2つを組み合わせると少し問題があります。
以下の例では、検索結果は適切なに表示されますresult_list.html
。
<form id="search-form" method="get" action=".">
{{ form.as_p }}
<input type="submit" value="search" />
</form>
<div id="search-results">
{% include "result_list.html" %}
</div>
result_list.html:
{% if sales_items %}
{% for item in sales_items %}
<li>
<ul>
Search Result...
</ul>
</li>
{% endfor %}
{% if show_paginator %}
<div class="paginator">
...
(Page {{ page }} of {{ pages }})
</div>
{% endif %}
{% else %}
{% trans 'No Items found.' %}
{% endif %}
このソリューションは非常にうまく機能します。(ajaxを介して)何かを検索するたびに、ページネーションを含むresult_list.htmlが更新されるためです。
問題:
しかし、代わりにテーブルがあれば、このアプローチを使用できなくなりました。
<table class="table">
<thead>
<tr>
<th>...</th>
</tr>
</thead>
<tbody id="search_result">
{% include 'calls_list.html' %}
</tbody>
</table>
更新が必要なページビットは、<tbody>
タグの間にあります。したがって、Calls_List.htmlは、によって理解されるタグのみ<tr>
を返します。(上記の例とは異なり)そこにもページネーターコードを貼り付けることができませんでした:<td>
<tbody>
{% if show_paginator %}
<div class="paginator">
...
(Page {{ page }} of {{ pages }})
</div>
{% endif %}
...テーブルのtbodyは、そこにdiv要素が見つかることを期待していないためです。
サーバーへの2回目のラウンドトリップを実行して、ページネーションコードを個別にプルしない限り。私はこれに対するきれいな解決策を見つけることができませんでした。
あなたは同じ状況にありましたか、どのようにこれを解決しましたか?
どうもありがとう、