我有一个文章列表,当我尝试对它们进行排序时,按日期为例,我注意到了一些有趣的东西(并且令人烦恼):
我的分页限制为最多10篇文章,但无论我选择哪个日期(我10月份有10篇文章),我的加载按钮始终打开。
因此,当我选择按十月排序时,会发生以下情况:
我列出了2015年10月的文章,点击加载更多,我看到了2016年1月的文章。 然后,如果我点击加载更多,我会看到2015年12月,然后是11月,然后是10月。
这将无限重复。
对于记录,我使用以下格式发送日期:2016-01
并以相同的方式存储在数据库2016-01-26
中。
以下是我对日期的看法:
class DateListView(BaseArticleView, ListView):
view_url_name = 'djangocms_press:articles-date'
def get(self, request, *args, **kwargs):
context = {}
qs = super(DateListView, self).get_queryset()
qs = qs.filter(date_realization__startswith=self.kwargs['daterealization'])
self.object_list = qs
context.update(self.get_context_data(**kwargs))
context[self.context_object_name] = context['object_list']
context['load_more_url'] = self.get_load_more_url(self.request, context)
return self.render_to_response(context)
def render_to_response(self, context):
if self.request.is_ajax():
response = self.render_to_json_response(context)
else:
response = super(DateListView, self).render_to_response(context)
return response
def get_load_more_url(self, request, context):
args = request.GET.copy()
page_obj = context.get('page_obj', None)
if not page_obj or not page_obj.has_next():
return ''
args[self.page_kwarg] = page_obj.next_page_number()
return '?{}'.format(args.urlencode())
def render_to_json_response(self, context, **response_kwargs):
if 'current_app' not in context:
context['current_app'] = resolve(self.request.path).namespace
c = RequestContext(self.request, context)
html_items_list = render_to_string(
'base_templates/template_press.html',
context,
context_instance=c)
html_items_list = html_items_list.strip()
json_response = {
'html_items_list': html_items_list,
'load_more_url': self.get_load_more_url(self.request, context),
}
return JsonResponse(json_response)
我为我的ajax做了什么,
在更改选择(允许选择类别)时:
ajaxArticles = function(urlAjax, category) {
var $articleList = $("#articles-list");
$ajaxresult = $.ajax({url: urlAjax, success: function(result) {
var content = $('<div/>').html(result.html_items_list).contents().find("#articles-list");
$articleList.html(content.html());
updateLoadMoreButton(result.load_more_url);
}});
}
urlAjax是我们示例中日期的那个,
url(r&#39; ^ date /(?P [\ w。@ + - ] +)/ $&#39;,DateListView.as_view(),name =&#39; articles-date&#39; ),
最后,我点击加载更多按钮:
$(document).on('click', '#loadmore', function(event) {
event.preventDefault();
$this = $(this);
var $articleList = $("#loadAppend");
$.ajax({url: $this.attr('href'), success: function(result) {
var content = $('<div/>').html(result.html_items_list).contents().find("#articles-list");
content.html()
$articleList.append(content.html());
updateLoadMoreButton(result.load_more_url);
}});
});
$ this.attr(&#34; href)是&#34;?page = Number&#34;
我太失落了。有没有人对这个问题有所了解? 为什么它不仅仅返回被要求的项目?
答案 0 :(得分:0)
我解决了它,在点击我的加载按钮时,我没有请求好的URL,当我点击它时请求所有URL。