我有一个页面显示按日期分组的消息,并通过AJAX进行分页。
考虑数据库包含9个消息Django AJAX带分组加载分页
- 3被送往2月9日
- 3被送往8二月
- 3被送往2月7日
和查询集仅由5个消息限于。
查看代码看起来像这样
page = Paginator(queryset, int(request.GET['limit'])).page(request.GET['page'])
return paginator.page(request.GET['page']).object_list
HTML看起来像这样
<div class='messages-container'>
{% include 'messages-snippet.html' %}
</div>
<a href='?page=2&limit=5'>Load older</a>
和消息 - 摘录的HTML看起来像这样
<div class='day-messages'>
<span>9 Feb 2012</span>
<p class='message'>Message 1</p>
<p class='message'>Message 2</p>
<p class='message'>Message 3</p>
</div>
<div class='day-messages'>
<span>8 Feb 2012</span>
<p class='message'>Message 4</p>
<p class='message'>Message 5</p>
</div>
因此当客户端点击“加载较老的“时,浏览器将把请求发送到相同的视图,这将在消息sni上进行渲染PPET模板,产生HTML代码这样
<div class='day-messages'>
<span>8 Feb 2012</span>
<p class='message'>Message 6</p>
</div>
<div class='day-messages'>
<span>7 Feb 2012</span>
<p class='message'>Message 7</p>
<p class='message'>Message 8</p>
</div>
当我注入这个网站在父DIV,结果会是这样
<div class='messages-container'>
<div class='day-messages'>
<span>9 Feb 2012</span>
<p class='message'>Message 1</p>
<p class='message'>Message 2</p>
<p class='message'>Message 3</p>
</div>
<div class='day-messages'>
<span>8 Feb 2012</span>
<p class='message'>Message 4</p>
<p class='message'>Message 5</p>
</div>
<div class='day-messages'>
<span>8 Feb 2012</span>
<p class='message'>Message 6</p>
</div>
<div class='day-messages'>
<span>7 Feb 2012</span>
<p class='message'>Message 7</p>
<p class='message'>Message 8</p>
</div>
</div>
<a href='?page=2&limit=5'>Load older</a>
现在我有两个组在同一天( 2012年2月8日)
目前我做了一个骇客解决方案来解决这个问题。我检测是否有重复组,然后合并它们。虽然,我不喜欢这个解决方案。我想知道是否有人想到更好的解决方案。
注:我见过Django Endless Pagination,它似乎处理我的ajax部分,但它不能解决分组问题。
另外我想到了jQuery模板,但是我仍然需要检测日期组是否重复。
任何帮助将不胜感激,提前致谢。
如果您在AJAX响应中返回HTML,那么处理jQuery中的重复组似乎是最简单的解决方案。 – 2012-02-24 12:36:34