0

在 Django 中,实现分页以在多个页面上显示查询项非常简单。使用 Ajax 仅更新页面中真正发生变化的部分也非常简单,而不是每次都加载整个页面。但是,当两者结合起来时,我发现它有点问题。

在下面的示例中,搜索结果应显示在适当的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>

结果列表.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 元素。

除非我第二次往返服务器以单独提取分页代码。我找不到一个干净的解决方案。

请问你有同样的情况,请问你是怎么解决的?

非常感谢,

4

1 回答 1

1
  • 一种解决方案是将分页部分放在 a 中,<tr>但根据需要更改可视化(例如,只有 1 个<td>或跨越多个列等)

  • 另一种解决方案是您更改您Calls_list.html 的返回完整<table>标签并将分页部分放在单独的<div>.

  • 第三个选项可以是返回 JSON 的行数据和分页数据。然后只需更新现有的表格行和分页html。

于 2012-09-01T17:18:56.060 回答